Docker初探(三) spring boot + mysql

使用项目 https://gitee.com/weim/docker-first进行修改

一 项目更改

a     首先更改application.properties内容

spring.profiles.active=dev

b    添加application-dev.properties文件

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文件

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  后续说明。

二 编译

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镜像。

$ 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镜像

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  查看启动之后的容器信息

猜你喜欢

转载自my.oschina.net/u/2490316/blog/1794720