我在PORTS一個docker container ls條目的列(一個由 Nginx 提供的反應應用程式的容器)的列上得到這個值:
PORTS
80/tcp, 0.0.0.0:40000->40000/tcp, :::40000->40000/tcp
我知道第二部分是 IPv4 映射,第三部分是 IPv6。我不明白 的含義80/tcp,但我認為這才是真正使應用程式可以從互聯網訪問的原因,因為如果我使用映射“80:80”它可以作業,但現在使用“40000:40000”它不會。
我的專案有這樣的結構,所以它可以使用 compose 一次構建多個專案:
|
|- client (a React app)
| |- Dockerfile-client
|- .env.prod
|- docker-compose.yml
docker-compose.yml看起來像這樣:
version: '3.7'
services:
client:
build:
dockerfile: ./client/Dockerfile-client
context: ./ # so the .env.prod file can be used by React
container_name: client
env_file:
- .env.prod # enabled to apply CLIENT_PORT var to Dockerfile-client
ports:
- "${CLIENT_PORT}:${CLIENT_PORT}"
# others
所有變數都定義在.env.prod(CLIENT_PORT是 40000)中,我像 `docker compose --env-file .env.prod up' 一樣運行 compose,它不會帶來錯誤。
這是構建客戶端容器的 Dockerfile:
# build env
FROM node:13.13-alpine as build
WORKDIR /app
COPY ./client/package*.json ./
RUN npm ci
COPY ./client/ ./
COPY ./.env.prod ./
RUN mv ./.env.prod ./.env
RUN npm run build
# production env
FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
EXPOSE ${CLIENT_PORT}
CMD ["nginx", "-g", "daemon off;"]
如果我映射“80:80”,一切都會正常作業,但我的問題是,當檔案中沒有“80”時,輸出80/tcp中的輸出如何?ls可能是因為Nginx?
uj5u.com熱心網友回復:
80/tcp來自默認情況下在此埠上偵聽的 nginx。
在這種情況下,正確的埠映射將是4000:80
或者
如果您希望 nginx 在其他埠上偵聽,例如nginx.conf4000檔案中的更新listen引數到該埠
http {
server {
listen 4000;
}
}
然后使用埠映射作為4000:4000
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/508686.html
