好吧,我将docker-compose文件更改为将端口绑定到80。我希望这会更新为正在运行的(新创建的)docker中的端口更改。
但是我注意到这不会发生:
version: '3.7'
networks:
test:
driver: bridge
services:
test-nginx:
build:
context: ./test-nginx/
container_name: test-nginx
image: test-nginx
networks:
- test
ports:
- 380:80
但是在docker-compose up -d --build test-nginx
之后再docker ps
之后,我看到以下内容:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc1ef0f91f24 test-nginx "nginx -g 'daemon of…" 5 minutes ago Up 8 seconds 443/tcp, 0.0.0.0:280->80/tcp test-nginx
它仍在使用旧端口280
。我如何在不先删除dockers的情况下强制其更新docker?上下文包含一个DockerFile
,它仅公开所需的端口。 (在获取站点数据之前)。
这是否可能是由于docker-compose最初在(python)虚拟环境中运行? -然后再用普通的外壳? 如果这是问题所在,我该如何在python中“退出”虚拟环境?
docker-compose最初通过子进程运行:
subprocess.run(['sudo', 'docker-compose', 'up', '-d', '--build'])