解决macOS下docker-compose up无法启动的问题

最近在上spring MVC做后端开发的课程,需要用的docker。课程原本是需要用VirtualBox安装Ubuntu/trusty64来统一开发环境,然而virtualbox+ubuntu在mac下的卡顿太严重(与内存分配无关),老师便允许我直接在os下做开发,于是我便自己用docker。

安装docker的过程很简单,在homebrew下可以找到docker toolbox:

brew cask search docker
==> Exact Match
docker
==> Partial Matches
docker-edge                                    docker-toolbox 

 直接安装docker-toolbox就可以了。

在配好了启动mysql容器的yml file (docker-compose.yml)

mysql:
  image: mysql
  ports:
    - "3306:3306"
  environment:
    MYSQL_ROOT_PASSWORD: root

 启动Docker Quickstart Terminal后,在terminal下执行docker-compose up会报错

docker-compose up
ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`.

 

我google了一下发现这是一个挺普遍的问题。github上有专门的thread讨论并且开发者给出了解决方案:

1. 运行 the Docker Quickstart Terminal app

2. 运行 docker-machine restart default

3. 运行 eval $(docker-machine env default)

注: 每次都需要启动eval $(docker-machine env default) 才能执行docker-compose up

实测方案可行!

 

P.S.

docker-compose.yml文件:

mysql:
  image: mysql
  ports:
    - "3306:3306"
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: cs504

 docker-compose up后先用docker exec -it <containerID> bash进入容器,然后再log in mysql

 

使用spring data连接mysql需要配置application.properties文件(注意一定要放在src/main/resources下面才行。csdn一篇讲spring-data docker-mysql的文章写得很好)

# 192.168.99.100 is the ip of docker-machine
spring.datasource.url=jdbc:mysql://192.168.99.100:3306/cs504 
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# Specify the DBMS
spring.jpa.database = MYSQL
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = create

测试:

post:

 

 

get

 

 

撒花~

posted @ 2017-12-19 14:37  aureole420  阅读(3232)  评论(0)    收藏  举报