Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 如何在Ansible中使用环境变量?_Docker_Docker Compose_Ansible - Fatal编程技术网

Docker 如何在Ansible中使用环境变量?

Docker 如何在Ansible中使用环境变量?,docker,docker-compose,ansible,Docker,Docker Compose,Ansible,我有一个docker compose项目,我想转换成Ansible 一切正常,但我想将下面的命令从docker compose转换为Ansible。 我试图传递(env,envfile命令),但它仍然不能正常工作。这是docker compose中的命令 Environment: - NGINX_HOST=http://nginx:80 有没有办法在Ansible剧本中选择和使用环境变量? Ansible中此命令的语法是什么 我的剧本 - hosts: all connection:

我有一个docker compose项目,我想转换成Ansible

一切正常,但我想将下面的命令从docker compose转换为Ansible。 我试图传递(env,envfile命令),但它仍然不能正常工作。这是docker compose中的命令

  Environment:
 - NGINX_HOST=http://nginx:80
有没有办法在Ansible剧本中选择和使用环境变量? Ansible中此命令的语法是什么

我的剧本

- hosts: all
  connection: local
  tasks:

  - name: 3
    command: docker build --network host -t man /home/my/Documents/2/mysite/

  - name: php
    docker_container:
      name: 1-php
      image: php:fpm
      state: started
      volumes:
       - ./file:/var/www/html/x.com

  - name: nginx-vts-exporter
    docker_container:
      name: x-Exporter
      image: sophos/nginx-vts-exporter:latest
      state: started
      ports:
       - 9913:9913


  - name: prom
    docker_container:
      name: x-prometheus
      image: prom/prometheus:latest
      state: started
      ports:
       - 9090:9090
      volumes:
       - ./monitor/prometheus.yml:/etc/prometheus/prometheus.yml
      links:
       - x-Exporter

  - name: nginx
    docker_container:
      name: x-Nginx
      image: nginx:latest
      volumes:
        - ./site.conf:/etc/nginx/conf.d/x.conf:ro
        - ./file:/var/www/html/x.com
      ports:
        - 80:80
      links:
        - 1-php
        - x-Exporter

如果使用vars中的变量。您可以使用类似于“{repo}}”的语法,环境变量的键也是env,而不是environment

- hosts: fix
  remote_user: root
  vars:
    repo: test
  tasks:
    - name: prom
      docker_container
        env:
          REPO: "{{repo}}"
          HOSTIP: "{{ ansible_eth0.ipv4.address }}"
          NGINX_HOST: http://nginx:80

对于目标机器的环境变量,使用
{{{{lookup('env','NGINX_HOST')}}}
。对于源代码,请参阅本文:我需要与docker一起使用它。。。我试着用答案中的语法,但没有用。我添加了我的剧本,这样你就可以明白我的意思了。。。。导出器没有到达nginx映像,我想添加环境命令,你能编辑它以便它能够到达end ecport度量吗?是的,更新,到docker_容器部分,你可以放置“env”子部分并放在那里,你的环境变量你的意思是。。。。。。。。。。。。。。。。。。。vars:NGINX\u主机:如果没有,您可以编辑您的帖子并将代码放入其中。您不能使用vars,只需放入字符串NGINX\u主机:“主机”