gpt4 book ai didi

docker-compose 规模容器警告

转载 作者:行者123 更新时间:2023-12-05 06:58:21 24 4
gpt4 key购买 nike

我有这个 docker-compose 文件:

version: "3.8"
services:

web:
image: apachephp:v1
ports:
- "80-85:80"
volumes:
- volume:/var/www/html
network_mode: bridge

ddbb:
image: mariadb:v1
ports:
- "3306:3306"
volumes:
- volume2:/var/lib/mysql
network_mode: bridge
environment:
- MYSQL_ROOT_PASSWORD=*********
- MYSQL_DATABASE=*********
- MYSQL_USER=*********
- MYSQL_PASSWORD=*********

volumes:
volume:
name: volume-data
volume2:
name: volume2-data

运行时:

docker-compose up -d --scale web=2

它也能正常工作,但会收到此警告:

WARNING: The "web" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.

有人可以帮助避免这些警告吗?提前谢谢。

最好的问候。

最佳答案

我想,您尝试在不知道特定容器端口的情况下访问 Web 服务,并将请求分发到此处的容器。如果我认为,要做到这一点,您需要系统配置的负载平衡机制。在下面的示例中,我将使用 NGINX 作为负载平衡器。

version: "3.8"
services:

web:
image: apachephp:v1
expose: # change 'ports' to 'expose'
- "7483" # <- this is web running port (Change to your web port)
....

ddbb:
....
## New Start ##
nginx:
image: nginx:latest
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- web # your web service name
ports:
- "80:80"
## New End ##

volumes:
...

因此,如果您想扩展服务,则无需将 Web 服务的 端口 80-85:80 映射到主机端口。因此,我从您的 Docker Compose 文件中删除了端口映射配置,仅公开端口,如上所示:

在 nginx 服务中,我将端口映射添加到该服务器的主机容器。例如,我将 NGINX 配置为监听端口 4000,这就是我们必须为此端口添加端口映射的原因。

nginx.conf 文件内容:

user  nginx;

events {
worker_connections 1000;
}
http {
server {
listen 4000;
location / {
proxy_pass http://pspdfkit:5000;
}
}
}

你会发现here更多详细信息,使用 Docker Compose 在开发中运行服务的多个实例。

关于docker-compose 规模容器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64645349/

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