gpt4 book ai didi

docker - 在单个Linux Web服务器服务器上运行多个Docker容器

转载 作者:行者123 更新时间:2023-12-02 21:05:49 26 4
gpt4 key购买 nike

您好,我目前正在计划使用Docker的一些服务器架构。 (我是Docker的新手)

我的目标是:

  • 在单个ubuntu机器上运行多个docker容器。
  • 每个容器的每个进程使用相同的端口:(例如)前端使用localhost:8080,后端使用localhost:3000。

  • 每个容器的工作方式:

    现在,我正在使用docker compose来运行前端和后端。

    docker-compose.yml
    version: '3'
    services:
    frontend:
    build: ./frontend
    ports:
    - 8080:80
    networks:
    - app-network
    backend:
    build: ./backend
    ports:
    - 3000:3000
    working_dir: /usr/src/server
    command: node server.bundle.js
    networks:
    - app-network
    networks:
    app-network:
    driver: bridge

    这很好。我可以访问localhost:8080来访问网页,并可以访问localhost:3000来访问后端。

    注意:前端容器使用NGINX docker镜像,后端使用NODE:10 docker镜像。

    我要完成的工作

    在我的服务器上,我将有另一个NGINX实例。我想以某种方式将每个docker-compose设置容器化到一个端口(如localhost:5000)下。

    这样,当我从www.example-website1.com收到请求时,它将重定向到localhost:5000,然后从该docker-compose设置加载localhost:8080。

    同样,当我从www.example-website2.com收到请求时,它重定向到localhost:5001,然后从另一个docker-compose设置加载localhost:8080。

    这可能吗?还是有其他方法可以解决这个问题?

    最佳答案

    您不能在两个不同的容器中使用相同的端口,必须始终公开一个不同的端口。

    要配置ngnix,必须将其安装在主机上,然后转到以下文件夹:

    /etc/ngnix/sites-enabled 

    然后使用ngnix将使用的规范创建一个.conf文件。
    例:

    myapi.conf
    server {
    server_name mywebsite.com;
    access_log /etc/nginx/mywebsite.log;

    location / {
    proxy_pass http://127.0.0.1:9003;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    }

    在此示例中,所有通过网站mywebsite.com到达的流量都将定向到暴露了端口9003的容器。
    希望对你有帮助

    关于docker - 在单个Linux Web服务器服务器上运行多个Docker容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58050492/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com