首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头集装箱ls港口列的含义

问码头集装箱ls港口列的含义
EN

Stack Overflow用户
提问于 2022-09-14 15:12:11
回答 1查看 63关注 0票数 0

我在PORTS条目的docker container ls列上获得了这个值(Nginx所提供的react应用程序的容器):

代码语言:javascript
复制
PORTS
80/tcp, 0.0.0.0:40000->40000/tcp, :::40000->40000/tcp

我知道第二部分是IPv4映射,第三部分是IPv6。我不明白80/tcp的含义,但我认为这才是使应用程序能够从互联网上访问的真正原因,因为如果我使用"80:80“映射,它就会工作,但现在使用"40000:40000”就不行了。

我的项目有这样一个结构,所以它可以一次构建多个项目:

代码语言:javascript
复制
|
|- client (a React app)
|  |- Dockerfile-client
|- .env.prod
|- docker-compose.yml

docker-compose.yml看起来如下所示:

代码语言:javascript
复制
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),我运行compose .env.prod up这样的命令,不会带来错误。

下面是构建客户端容器的Dockerfile:

代码语言:javascript
复制
# 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“时,ls输出中的ls是如何出现的呢?可能是因为Nginx?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-14 15:21:49

80/tcp来自nginx,默认情况下,nginx在此端口上侦听。

在这种情况下,正确的端口映射将是4000:80

或

如果希望nginx侦听其他端口(如4000 ),请将nginx.conf文件中的listen参数更新到该端口。

代码语言:javascript
复制
http {
    server {
        listen 4000;

        }
}

然后使用端口映射作为4000:4000

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73719274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档