[英]How to expose nginx docker image to port other than 80?
我有.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 時。 我嘗試更換線路
EXPOSE 8081
和
RUN -P 80:8081
EXPOSE 8081
但似乎這里不支持 -P 標志。 那么在將 nginx 暴露於 80 端口之前,我該如何進行這樣的映射呢?
我找到了這篇文章,但我不知道如何在我的 docker 文件中使用答案。
我還找到了這篇文章(環境變量的一部分),但也不確定如何將它與我的 docker-compose 文件集成。
第二個文件不是 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"
我相信-P需要小寫: -p (這是用於命令行命令,而不是 Dockerfile) 語法是:
Dockerfile:
....
EXPOSE 80
....
命令行:
docker run -d -p 8081:80 --name my-service my-service:latest
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.