【问题标题】:ansible docker env var not available in containeransible docker env var 在容器中不可用
【发布时间】:2015-12-19 08:27:45
【问题描述】:

我正在使用这样的 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 }}"

但 var DEPLOYMENT_ENVIRONMENT 在容器内不可用。当我尝试echo $DEPLOYMENT_ENVIRONMENT 或在其他地方使用时。

有什么遗漏吗?

【问题讨论】:

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

标签: variables docker ansible environment-variables


【解决方案1】:

在 ansible 2.7.9 中,您可以在 docker 容器中设置环境(开发、登台、生产)(仅限开发)

  - 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

【讨论】:

    猜你喜欢
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2018-12-19
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多