【问题标题】:How to expose nginx docker image to port other than 80?如何将 nginx docker 镜像暴露到 80 以外的端口?
【发布时间】:2019-06-09 23:39:41
【问题描述】:

我有.Dockerfile(来自source):

# 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 image 更改端口,而不是端口 80,我需要使用端口 8081。通过从上面的两个文件中简单地更改它,它不起作用,在我的研究中我发现唯一的工作例如从 nginx 暴露到端口 80 时。 我试着换行

EXPOSE 8081

RUN -P 80:8081
EXPOSE 8081

但这里似乎不支持 -P 标志。那么在将 nginx 暴露到 80 端口之前,我该如何做这样的映射呢?

我找到了this post,但我不知道如何在我的 docker 文件中使用答案。

我还找到了this post(环境变量的一部分),但也不确定如何将它与我的 docker-compose 文件集成。

【问题讨论】:

  • 为什么需要更改 Docker 端的端口号?最后希望得到什么样的配置?
  • 你更新/etc/nginx/conf.d/default.conf中的nginx配置文件了吗?它可能只监听 80 端口。
  • 不过,我不明白您为什么需要更改容器的端口。您是要绑定到主机上的 8081 而不是 8080,还是要在 8081 而不是 80 上绑定容器?
  • @JoelMagnuson 当我的 VueJS 应用程序正在侦听端口 8081 并且在进行分段部署(开发模式)时,这是我需要映射到的端口。上面的.Dockerfile 用于生产部署(在生产模式下)。我想为两种部署情况保留相同的 docker-compose.yml 文件,并且我不想更改应用程序中的内部 8081 端口,这会导致场景中的端口更改为泊坞窗图像。
  • @DavidMaze 请看我上面的评论

标签: docker nginx docker-compose dockerfile docker-image


【解决方案1】:

第二个文件不是 Dockerfile 而是 docker-compose.yml,你必须在 docker-compose.yml 中更改端口,就可以了。 当您使用命令 docker run 时,选项 -p "hostport:containerport" 会公开端口。 无论如何,我建议您在过多更改 dockerfile 中的图像之前使用受支持的官方图像。

无论如何,如果你真的需要 8081 试试这样的东西

version: "3"
services:
  service-name-one:
    image: yournginxOrSomethingelse
    ports:
      - "8080:80"
      - "8085:8081"

【讨论】:

    【解决方案2】:

    我相信-P需要小写:-p(这是命令行命令,不是Dockerfile)语法是:

    Dockerfile:

    ....
    EXPOSE 80
    ....
    

    命令行:

    docker run -d -p 8081:80 --name my-service my-service:latest
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-05
      • 2017-08-31
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多