Ansible:Docker容器中无法使用环境变量

3
我将使用Ansible启动一个Docker容器,方法如下:

name: start the new shiny container
docker:
  name: web
  image: pneuma/web
  state: started
  detach: True
  ports:
    - "80:80"
  volumes:
    - /data/db:/var/lib/postgresql
    - /data/log:/var/log/postgresql
  env:
    DEPLOYMENT_ENVIRONMENT: "{{ deployment_env }}"

但是容器内部无法使用变量DEPLOYMENT_ENVIRONMENT。当我尝试使用echo $DEPLOYMENT_ENVIRONMENT或在其他地方使用时会出现问题。

还有什么遗漏的吗?


你能尝试展示Ansible中变量的内容并返回结果吗?
  • debug: var= {{ deployment_env }} 你是如何设置该变量的?
- RuBiCK
我将其设置为主机变量在清单文件中,如下所示,ip_address ansible_ssh_private_key_file=key_path ansible_user=username deployment_env=staging - austiine
变量可以在Docker检查容器的日志中看到,但由于某种原因,在容器内部无法访问。 - austiine
我已经尝试复制您所做的,并且对我来说运行良好。请参见:$ docker exec -it 0f65 /bin/bash ... root@0f65cf218c2e:/# echo $DEPLOYMENT_ENVIRONMENT ... staging您能否发布有关如何运行ansible playbook以及如何访问容器的更多详细信息? - Richard Corfield
1个回答

1
在ansible 2.7.9中,您可以在docker容器中设置环境(dev,staging,production),仅适用于开发。
  - name: Build docker image
    docker_container:
      name: container_name
      image: image_name:latest
      env:
        ENV: "{{ENV}}"
      recreate: yes
      state: started
      restart: yes

执行以下命令:
$ ansible-playbook -e "ENV=staging" main.yml

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接