在docker 中部署 springboot + mysql

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

猜你喜欢

转载自blog.csdn.net/wuyezhiyu/article/details/80820109