Ansible docker_container: wordpress->mysql 没有到主机的路由



我想用ansible、worpress和mysql创建一个码头化的应用程序。因此,我使用了一个带有容器模块的剧本:

vars:

dockers:
mysql:
volume: mysql-data
volume_mount: /var/lib/mysql
volume2: '{{ docker_vols }}/mysql-cnf/my.cnf'
volume_mount2: '/etc/mysql/my.cnf'
image: mysql:latest
name: mysql
restart: always
#ports: "3306:3306"
mem: "512M"
wordpress:
volume: wp-content
volume_mount: '/var/www/html/wp-content'
volume2: wp-data
volume_mount2: '/var/www/html/'  
image: wordpress:latest
name: wordpress
restart: always
ports: "8080:80"
mem: "512M"

任务:


---
- name: setup mysql
docker_container:
name: "{{ dockers.mysql.name }}"
image: "{{ dockers.mysql.image }}"
volumes:
- "{{ dockers.mysql.volume }}:{{ dockers.mysql.volume_mount }}"
state: started
restart: yes
restart_policy: "{{ dockers.mysql.restart }}"
memory: "{{ dockers.mysql.mem }}"
env:
MYSQL_ROOT_PASSWORD: "{{ MYSQL_ROOT_PASSWORD }}"
MYSQL_DATABASE: "{{ MYSQL_DATABASE }}"
MYSQL_USER: "{{ MYSQL_USER }}"
MYSQL_PASSWORD: "{{ MYSQL_PASSWORD }}"
tags: [ 'docker-run' ]

- name: setup wordpress
docker_container:
name: "{{ dockers.wordpress.name }}"
image: "{{ dockers.wordpress.image }}"
volumes:
- "{{ dockers.wordpress.volume2 }}:{{ dockers.wordpress.volume_mount2 }}"
- "{{ dockers.wordpress.volume }}:{{ dockers.wordpress.volume_mount }}"      
state: started
restart: yes
restart_policy: "{{ dockers.wordpress.restart }}"
memory: "{{ dockers.wordpress.mem }}"
ports:
- "{{ dockers.wordpress.ports }}"
links:
- "mysql:mysql"
env:
#WORDPRESS_DB_HOST: "{{ WORDPRESS_DB_HOST | default(omit) }}"  #also tried: "mysql:3306"
WORDPRESS_DB_USER: "{{ WORDPRESS_DB_USER }}"
WORDPRESS_DB_PASSWORD: "{{ WORDPRESS_DB_PASSWORD }}"
WORDPRESS_DB_NAME: "{{ WORDPRESS_DB_NAME }}"
tags: [ 'docker-run' ]

但在wordpress docker的日志中说:

MySQL Connection Error: (2002) No route to host
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message

我认为错误在链接部分,但尝试了我找到的所有表单,仍然无法使其工作。

使用链接是docker链接的遗留功能。您可以创建一个docker网络,并将两个容器连接到同一网络中,这样它们就可以相互交谈。

- name: "Create a network"
docker_network:
name: "{{ docker_network_name }}"

将这些行添加到每个容器中。

networks:
- name: {{ docker_network_name }}

你的设置应该像一样

---
- name: setup mysql
docker_container:
name: "{{ dockers.mysql.name }}"
image: "{{ dockers.mysql.image }}"
volumes:
- "{{ dockers.mysql.volume }}:{{ dockers.mysql.volume_mount }}"
state: started
restart: yes
restart_policy: "{{ dockers.mysql.restart }}"
memory: "{{ dockers.mysql.mem }}"
networks:
- name: {{ docker_network_name }}
env:
MYSQL_ROOT_PASSWORD: "{{ MYSQL_ROOT_PASSWORD }}"
MYSQL_DATABASE: "{{ MYSQL_DATABASE }}"
MYSQL_USER: "{{ MYSQL_USER }}"
MYSQL_PASSWORD: "{{ MYSQL_PASSWORD }}"
tags: [ 'docker-run' ]

- name: setup wordpress
docker_container:
name: "{{ dockers.wordpress.name }}"
image: "{{ dockers.wordpress.image }}"
volumes:
- "{{ dockers.wordpress.volume2 }}:{{ dockers.wordpress.volume_mount2 }}"
- "{{ dockers.wordpress.volume }}:{{ dockers.wordpress.volume_mount }}"      
state: started
restart: yes
restart_policy: "{{ dockers.wordpress.restart }}"
memory: "{{ dockers.wordpress.mem }}"
ports:
- "{{ dockers.wordpress.ports }}"

networks:
- name: {{ docker_network_name }}
env:
#WORDPRESS_DB_HOST: "{{ WORDPRESS_DB_HOST | default(omit) }}"  #also tried: "mysql:3306"
WORDPRESS_DB_USER: "{{ WORDPRESS_DB_USER }}"
WORDPRESS_DB_PASSWORD: "{{ WORDPRESS_DB_PASSWORD }}"
WORDPRESS_DB_NAME: "{{ WORDPRESS_DB_NAME }}"
tags: [ 'docker-run' ]

最新更新