Docker初探(三) spring boot + mysql

使用項目 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  查看啓動以後的容器信息

相關文章
相關標籤/搜索