1.下载镜像
docker pull mysql:5.7
docker pull java:8
2.创建容器
创建mysql容器:
docker run --name mysqlContainerTest --restart=always -e MYSQL_ROOT_PASSWORD=12345 -e TZ="Asia/Shanghai" -p 3310:3306 docker.io/mysql:5.7
说明:
-e TZ="Asia/Shanghai" 修改时区
创建springboot工程容器
docker run -d --name springboottest -p 9003:8080 -v /usr/local/dev/webapp/test1:/usr/src/myapp -w /usr/src/myapp -v /etc/localtime:/etc/localtime:ro --restart=always java:8 java -jar /usr/src/myapp/app.jar --server.port=8080
说明:
-v /etc/localtime:/etc/localtime:ro 同步时间
3.jdbc 字符串
[root@localhost test1]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
462dcff418ae java:8 "java -jar /usr/sr..." 11 minutes ago Up 9 minutes 0.0.0.0:9003->8080/tcp springboottest
26049fa0a9e9 redis:3.2 "docker-entrypoint..." 3 weeks ago Up 8 hours 0.0.0.0:6379->6379/tcp redisTest
fbbf9096b8f3 rabbitmq:management "docker-entrypoint..." 4 weeks ago Exited (0) 31 hours ago rabbitmq
3230cdc2d42a docker.io/tomcat:latest "catalina.sh run" 5 weeks ago Exited (143) 2 weeks ago merchant
39b4357e73ae docker.io/mysql:5.7 "docker-entrypoint..." 5 weeks ago Up 2 weeks 0.0.0.0:3310->3306/tcp mysqlContainerTest
(1)springboot与mysq不在同1机器
jdbc中的mysql连接串可直接写入外部ip和端口,例如
jdbc:mysql://192.168.80.217:3310/member_marketing_dev?useSSL=false&useUnicode=true&characterEncoding=utf-8
(2)springboot与mysq在同1机器
这时需要查找mysql容器在主机内部的ip与端口
ip:
[root@localhost test1]# docker network ls
NETWORK ID NAME DRIVER SCOPE
d6142b0b5a4e bridge bridge local
5dc3d20b7801 docker-at bridge local
e9160a5375a7 host host local
docker network inspect bridge命令
查看容器的内部ip
[root@localhost test1]# docker network inspect bridge
[
{
"Name": "bridge",
"Id": "d6142b0b5a4edf7866e1a84b97ae73551bfaa0baccd736fb7d05fbdc4f708ec3",
"Created": "2018-06-11T09:03:20.049843552+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Containers": {
"26049fa0a9e9054e3f47cee7acf5923d3fd6737c7183a35e6618e8c9810bfd6c": {
"Name": "redisTest",
"EndpointID": "f12bfe8f242e50d9cd651cae503bbe371c6b0700416a82a7a27922d08bef316f",
"MacAddress": "02:42:ac:11:00:03",
"IPv4Address": "172.17.0.3/16",
"IPv6Address": ""
},
"39b4357e73ae952f62b34bfed9c4083c3d2fe31bec2ef436420bb1e17bc2be10": {
"Name": "mysqlContainerTest",
"EndpointID": "8d873edac4e871703d516e35443f0228f6a048ae993f1577707f1a644e346083",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
},
"462dcff418ae0c55dbd6259eb55332306f295f28d78cda55c204fb425cc6185f": {
"Name": "springboottest",
"EndpointID": "6a00e1682f2bf0856de6584d5a05d8a0da69578b673611eb9f4083f65cfb8d64",
"MacAddress": "02:42:ac:11:00:04",
"IPv4Address": "172.17.0.4/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
port:
使用mysql容器的内部端口:3306,而不是外部暴露端口3310
jdbc:mysql://172.17.0.2:3306/member_marketing_dev?useSSL=false&useUnicode=true&characterEncoding=utf-8