【发布时间】:2019-05-09 08:44:35
【问题描述】:
在我的 docker-compose.yml 中,我使用了一些 .env 变量。就这样:
services:
ms:
image: 'template:latest'
build:
context: .
restart: always
ports:
- '${PORT}:${PORT}'
env_file:
- .env
Docker 文档说,当 .env 和 docker-compose.yml 文件同时存在时,我必须从目录运行 docker-compose up 命令。
我想使用 GitLab CI 自动部署我的服务。这是 .gitlab-ci.yml 文件的一部分:
image: docker:latest
services:
- docker:dind
...
run-deploy-prod:
stage: deploy
cache: {}
before_script:
# ssh configuration for alpine linux
script:
# move docker-compose.yml and .env to the location ~/docker_app/app
- ssh $USER_NAME@$HOST_ADDRESS 'docker-compose -f '~/docker_app/app/docker-compose.yml' up --no-build -d'
问题: 如何准确地从 ~/docker_app/app 位置运行 docker-compose 以正确加载 .env 变量?
我尝试将 ssh 与 -T、-tt 和 -t 选项一起使用,例如:
ssh -T bob@foo "cd ~/docker_app/app && exec \$SHELL && docker-compose up..."
没有任何成功。
任何帮助将不胜感激。
【问题讨论】:
标签: docker docker-compose continuous-integration gitlab alpine