У меня есть .Dockerfile
(из источника а>):
# build stage
FROM node:9.11.1-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# production stage
FROM nginx:1.13.12-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Где в конце приложение получает доступ к порту 80. Затем у меня есть еще один другой .Dockerfile
, и для их создания я использую следующий файл docker-compose.yml
:
version: "3"
services:
service-name-one:
image: dockerImageFromAbove
ports:
- "8080:80"
service-name-two:
image: someOtherImage
ports:
- "3000:3001"
И это пример, который действительно работает. Но мне нужно было бы изменить порт с образа докера nginx
, а вместо порта 80 мне нужно было бы иметь порт 8081. Просто изменив это в обоих файлах сверху, это не работает, и в своем исследовании я обнаружил, что единственный рабочий пример при открытии порта 80 из nginx. Я попытался заменить строку
EXPOSE 8081
с участием
RUN -P 80:8081
EXPOSE 8081
но похоже, что флаг -P здесь не поддерживается. Итак, как я могу сделать такое сопоставление, прежде чем выставлять nginx на порт 80?
Я нашел этот пост, но не могу выяснить, как использовать ответы в моих файлах докеров.
Я также нашел это сообщение (часть для переменных среды), но также не уверен, как интегрировать это с моим файлом docker-compose.
/etc/nginx/conf.d/default.conf
? Вероятно, он прослушивает только порт 80. - person Joel Magnuson   schedule 16.01.2019.Dockerfile
сверху предназначен для развертывания (в рабочем режиме) для производства. Я хотел бы сохранить один и тот же файлdocker-compose.yml
для обоих случаев развертывания, и я не хочу менять внутренний порт 8081 в приложении, что оставляет сценарий для изменения порта в образе докера. . - person delux   schedule 16.01.2019