【问题标题】:node App not reachable from outside docker无法从外部 docker 访问节点应用程序
【发布时间】:2020-05-23 00:24:29
【问题描述】:

我在尝试访问容器上的 NodeJs 应用时遇到了问题。

简历: 我自定义了自己的映像以在我的容器上运行 pm2 和环回。 我将我的应用程序配置为监听 docker 网络中另一个容器上的 mongodb。 这很好用。 我创建了 docker-compose.yml 文件,如下所示:

version: '3.5'

services:
  webapp:
    expose:
      - "3000"
    ports:
      - "3000:3000"
    volumes:
      - ${NODEJS_PATH}:${NODEJS_PATH_DESTIONATION}
    image: ${CUSTOMIZED_IMAGE}
    networks:
      default:
        ipv4_address: ${NODEJS_IP}

  db:
    image: mongo:4.2.6
    container_name: mongodb
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}
      MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE}
    volumes:
      - ${MONGO_SCRIPT_PATH}:${MONGO_SCRIPT_DESTINATION_PATH}
    networks:
      default:
        ipv4_address: ${MONGO_INITDB_IP}

networks:
  default:
    external:
      name: ${CUSTOMIZED_NET}

我现在使用 docker-compose run webapp 运行我的 webapp 以进行自定义。 在这个容器内我执行下一个 cmd

pm2 start app.js --env environment_variables

它在 http://localhost:3000 上运行 NodeJS 应用程序在 docker 内

我尝试从浏览器 http://{DOCKER_IP}:3000 进行检查,但它不起作用。

如果能解决这个问题,我将永远感激不尽。

【问题讨论】:

  • 先检查,去掉network标签,放上network_mode: "host"然后运行,尝试访问localhost:3000
  • 谢谢你的回答,它按你说的方式工作。

标签: node.js docker docker-compose


【解决方案1】:

我们使用 nginx 将服务从 docker 代理传递到外部世界。

我们这样做是因为我们需要 docker_network 上的其他服务来监听这个。

这是来自 nginx 的配置

server {
        listen 80;
        server_name domain.local;

        location /  {
                proxy_pass    http://localhost:3000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2021-07-18
    • 2016-10-12
    相关资源
    最近更新 更多