首次在mac上使用docker-compose,在写完docker-compose.yml后docker-compose up容器一直启动不起来,提示错误是
UnixHTTPConnectionPool(host='localhost', port=None): Read timed out.
碰到问题当然是先检查docker-compose.yml的配置了,大致是这样的:
version:"2"
services:
redis:
image:redis:latest
container_name:xxxx
volumes:
- ./data/redis:/data
restart:always
mysql:
build:../mysql
container_name:prador_mysql
volumes:
- ./data/mysql:/var/lib/mysql
ports:
-"3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=xxxx
- MYSQL_DATABASE=xxxx
按照经验应该是没什么问题的,但是在up的时候总是超时,接下来就是一顿google,结果发现在github上发现很多这类情况,解决方案基本是设置超时时间更长120s,默认是60s,尝试后问题依旧
最开始怀疑是mac上docker的问题,于是乎升级docker,重装docker问题依旧
这个时候回想到data这个目录的挂载,我是采用了软连接,实际data这个文件夹不在和docker-compose.yml同级目录下,遂ls data一下,发现是data(实际应该是redis和mysql两个文件夹),cd data的时候出现Too many levels of symbolic links
接下来问题就明确了,软连接用的不对,参考
http://www.cnblogs.com/beifei/archive/2011/09/07/2170301.html
- 后续经过测试,对于不同级目录的软连接,需要使用绝对路径,至此问题解决,docker-compose up能成功运行容器