我得到了#34;访问被拒绝"尝试连接到我通过我的ansible脚本启动的MySQL Docker容器时出错。如果我使用Docker CLI工具创建容器,一切正常。我想知道这是否与环境变量有关。
$ docker run --name database -e MYSQL_ROOT_PASSWORD=hunter2 -d mysql:5.7
$ mysql -h $CONTAINER_IP_ADDRESS -u root -phunter2
$ mysql>
playbook.yml
- name: Start new MySQL container
docker:
name: database
image: mysql:5.7
state: running
env:
MYSQL_ROOT_PASSWORD=hunter2
然后连接失败:
$ mysql -h $CONTAINER_IP_ADDRESS -u root -phunter2
ERROR 1045 (28000): Access denied for user 'root'@'$CONTAINER_IP_ADDRESS' (using password: YES)
知道我在这里失踪的是什么吗?
答案 0 :(得分:1)
docker module的env
定义应该是dict对象,而不是字符串
env:
MYSQL_ROOT_PASSWORD: hunter2
答案 1 :(得分:0)
过了一段时间后,我发现ansible与Docker的搭配并不好。我已经将一些基础架构从ansible转移到了Docker,并保留了一些遗留代码,例如将用户添加到mysql或转储dbs,这些代码都没有在Ansible中运行。
解决方案是使用shell代替:
{{1}}