解决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
撒花~