我有一个码头-撰写文件:
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.有人能帮忙避免这些警告吗?,谢谢你提前。
诚挚的问候。
发布于 2022-02-04 11:20:26
我想,您在不知道特定容器的端口的情况下访问web服务,并将请求分发到这里的容器。如果要做到这一点,您需要系统configuration.In的负载平衡机制--下面的示例中,我将使用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:
...因此,如果要缩放服务,则不需要将端口80-85:80从web服务映射到主机端口。因此,我从Docker撰写文件中删除了端口映射配置,并且只公开了上面所述的端口:
在nginx服务中,我向该服务器的主机容器添加端口映射。例如,我将NGINX配置为侦听端口4000,这就是为什么我们必须为这个端口添加端口映射。
nginx.conf文件内容:
user nginx;
events {
worker_connections 1000;
}
http {
server {
listen 4000;
location / {
proxy_pass http://pspdfkit:5000;
}
}
}您将找到这里的更多详细信息,以使用Docker在开发中运行多个服务实例。
https://stackoverflow.com/questions/64645349
复制相似问题