先看一个docker-comose的yml文件
version: "3.2"
services:
docker-test:
hostname: docker-test
image: '${DOCKER_REGISTRY_URL}/dockerteam/docker-test:1.0'
ports:
- "9118"
env_file: .env
deploy:
replicas: 1
restart_policy:
condition: on-failure
placement:
constraints: [node.role== worker]
resources:
limits:
# cpus: '1'
memory: 1GB
reservations:
# cpus: '0.2'
memory: 512M
如上文件中,env_file在docker-comose 命令里是支持的,只需要提供对应的.env文件,在.env文件中设置${DOCKER_REGISTRY_URL}变量即可。
但是如果线上在docker swarm 集群环境中docker-comose使用env_file是无效的,那这时候怎么办?这时候不能再去使用.env文件了,我尝试了一下把变量加入到宿主机的环境变量里:
export DOCKER_REGISTRY_URL=docker.sifu.cn:12135
再次运行docker stack命令,服务部署成功。