在docker 中部署 springboot + mysql

6 篇文章 0 订阅
3 篇文章 0 订阅

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用docker部署springboot+MySQL项目,可以按照以下步骤进行操作: 1. 编写Dockerfile文件,指定基础镜像、安装JDK和MySQL等依赖,将项目打包成jar包并复制到镜像。 ```dockerfile FROM openjdk:11-jdk-slim VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar RUN mkdir -p /var/lib/mysql RUN apt-get update && apt-get install -y mysql-server RUN echo "bind-address = 0.0.0.0" >> /etc/mysql/mysql.conf.d/mysqld.cnf RUN service mysql start && \ mysql -uroot -e "CREATE DATABASE db_name" && \ mysql -uroot -e "CREATE USER 'username'@'%' IDENTIFIED BY 'password'" && \ mysql -uroot -e "GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'%';" EXPOSE 8080 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 2. 构建镜像 在Dockerfile的目录下执行以下命令: ```shell docker build -t springboot-mysql . ``` 这里将镜像命名为springboot-mysql。 3. 运行容器 执行以下命令运行容器: ```shell docker run -d -p 8080:8080 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=db_name -e MYSQL_USER=username -e MYSQL_PASSWORD=password springboot-mysql ``` 这里将容器的8080端口映射到主机的8080端口,3306端口映射到主机的3306端口,并指定MySQL的root密码、数据库名、用户名和密码。 4. 访问应用 在浏览器访问http://localhost:8080,即可访问应用。 注意:如果使用docker-compose进行部署,可以在docker-compose.yml文件指定MySQL的配置,更加方便和灵活。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值