我有一个 .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
docker镜像的端口,将端口从80更改为8081。简单地在上述两个文件中进行更改不起作用,在我的研究中,我发现唯一有效的示例是将nginx暴露到80端口。请注意保留HTML标记。
EXPOSE 8081
使用
RUN -P 80:8081
EXPOSE 8081
但是似乎这里不支持-P标志。那么,在将nginx暴露到80端口之前,我该如何进行这样的映射呢?
我在这篇文章中找到了答案,但我不知道如何在我的docker文件中使用这些答案。
我还在这篇文章中找到了环境变量部分,但也不确定如何将其与我的docker-compose文件集成。
/etc/nginx/conf.d/default.conf
的 nginx 配置文件吗?它可能只监听了 80 端口。 - Joel Magnuson.Dockerfile
是为生产部署(生产模式)而设计的。我想在部署的两种情况下保持相同的docker-compose.yml
文件,并且不想更改应用程序中的内部8081端口,这将导致必须更改docker镜像中的端口。 - delux