首次在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能成功运行容器