使用項目 https://gitee.com/weim/docker-first進行修改mysql
一 項目更改git
a 首先更改application.properties內容redis
spring.profiles.active=dev
b 添加application-dev.properties文件spring
server.port=8088 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.jpa.hibernate.ddl-auto=update spring.redis.database=0 # Redis server port. spring.redis.port=6379 spring.redis.host=localhost
c 添加application-prod.properties文件sql
server.port=8088 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://mysql2:3306/test spring.datasource.username=root spring.datasource.password=root spring.jpa.hibernate.ddl-auto=update spring.redis.database=0 # Redis server port. spring.redis.port=6379 spring.redis.host=172.17.0.1
** 注意spring.datasource.url 部分 mysql2 後續說明。docker
二 編譯數據庫
a 使用命令mvn clean package -Dmaven.test.skip=true dockerfile:build 編譯spring boot文件,生成docker 鏡像。(-Dmaven.test.skip=true 跳過測試用例部分)網絡
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my/one latest 326b84df5960 About a minute ago 683MB
b 使用命令 docker pull mysql:5.7 下載mysql鏡像。app
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my/one latest 326b84df5960 About a minute ago 683MB mysql 5.7 5195076672a7 4 weeks ago 371MB
三 啓動mysql鏡像maven
docker run --name mysqltemp -v /tmp/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --rm mysql:5.7
--name 別名 -v 掛載 -d 後臺執行 --rm 容器中止時刪除 -e MYSQL_ROOT_PASSWORD=root 設置mysql密碼 root用戶
***********************************************************************************************************
詭異問題:上述命令使用了 -d 參數以後, 執行命令,等很久,容器啓動不起來。進入設置的/tmp/mysql路徑,就是上面-v指定的地方,會多一個ib_buffer_pool文件,刪除掉以後,再次運行上述命令。容器就能夠啓動起來了。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 88751523c75e mysql:5.7 "docker-entrypoint.s…" 4 seconds ago Up 2 seconds 3306/tcp mysqltemp
***********************************************************************************************************
容器啓動後才能夠使用docker logs mysqltemp -f 持續查看日誌,-f參數 持續
使用命令docker inspect --format '{{ .NetworkSettings.IPAddress }}' mysqltemp 查看容器ip
個人是172.17.0.2
而後使用命令mysql -uroot -proot -h 172.17.0.2 就能夠訪問數據庫了。
***********************************************************************************************************
進入數據庫以後,建立test數據庫。
四 啓動my/one鏡像
使用如下命令起啓動
docker run --name mine --link mysql2:mysqltemp -p 8088:8088 -e SPRING_PROFILES_ACTIVE=prod --rm -d my/one
--link mysql2:mysqltemp 鏈接容器 須要鏈接容器:容器別名
** 注意--link mysel2 對應上面mysql容器別名。
啓動起來以後,訪問http://localhost:8088/ 顯示hello user。
***********************************************************************************************************
redis沒有添加,有興趣者,能夠本身操做。
***********************************************************************************************************
--link 有可能會被後續版本取消,建議仍是使用自定義的Docker網絡來鏈接多個容器
使用docker network create -d bridge my-net命令建立docker網絡。
能夠使用docker network ls 命令查看建立的網絡。
使用mysql鏡像啓動容器 注意mysql2
docker run --name mysql2 -v /tmp/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --network my-net --rm mysql:5.7
使用my/one鏡像啓動容器
docker run --name mine --network my-net -p 8088:8088 -e SPRING_PROFILES_ACTIVE=prod --rm my/one
使用命令docker inspect 容器名|id 查看啓動以後的容器信息