docker学习(八) docker-compose 启动一个springboot 连接mysql

docker-compose 启动一个springboot 连接mysql

使用docker-compose启动一个springboot应用连接一个docker启动的mysql,docker-compose的安装很简单,可参考官方安装docker-compose, springboot例子在github源码 【learn2】模块

1 构建springboot工程,这里用gradle作为构建工具,运行gradle task打成一个jar包,maven方法类似,就不介绍了。

2 编写springboot的dockerfile, 具体的意思可参阅相关资料,也不介绍了。注意ADD的就是我们上一步打成的Jar包,与dockerfile放一个目录就好了。

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD learn2-1.0-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

3 编写docker-compose.yml,与jar包和dockerfile放同一目录。
先说mysql的配置,直接从docker hub下载,image 对应的就是docker hub的镜像, ports 对应端口映射,与docker -p差不多一个意思,environment 配置mysql创建的库,root的密码,还有允许访问的IP配为%,restart 每次都重新启动。
再说springboot工程的配置,context,dockerfile对应dockerfile的位置,ports端口映射,
volumes表示将物理机的当前目录映射到docker虚拟机/vol/development里面,depends_on依赖mysql 控制容器启动顺序让mysql先启。

version : '2'
services:

  learn2:
    build:
      context: .
      dockerfile: dockerfile
    ports:
      - "8080:8080"
    volumes:
      - .:/vol/development
    depends_on:
      - mysql

  mysql:
    image: docker.io/mysql:5.7
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: root
      MYSQL_ROOT_HOST: '%'
    restart: always

4 注意的一点,第一步打jar包构建的springboot工程application.yml中,mysql的连接方式使用mysql的镜像名而不是ip。

spring:
  datasource:
    url: jdbc:mysql://mysql:3306/test?characterEncoding=utf8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  jpa:
      database: MYSQL
      show-sql: true
      hibernate:
        ddl-auto: update
      properties:
          hibernate:
                dialect : org.hibernate.dialect.MySQL5Dialect

5 启动 在docker-compose.yml目录下运行 docker-compose up ,如果后台运行加一个-d,会发现mysql先从docker hub下载并启动,然后启动springboot工程,OK,可以使用springboot访问mysql了,springboot的例子里 我只注入了一个Datasource,输出了一个toString(),只是个简单例子证明连接成功了。

上一篇 windows下使用docker

下一篇 搭建swarm集群

Docker Compose一个用于定义和运行多容器Docker应用程序的工具。使用Docker Compose可以轻松地启动和停止多个容器,并且可以通过一个简单的配置文件来定义容器之间的关系和依赖关系。在引用中提到的docker-compose启动mysql,是指使用Docker Compose启动一个MySQL数据库容器。通过配置docker-compose.yml文件,可以指定MySQL容器的镜像、端口、数据卷等信息。启动后,可以使用docker-compose ps命令查看容器状态,使用docker-compose stop命令停止容器,使用docker-compose restart命令重启容器,使用docker-compose down命令关闭容器并删除相关资源。除了使用Docker Compose,还可以使用其他方式来启动MySQL容器,如使用Helm启动MySQL高可用集群、使用Docker Compose启动单节点MySQL等。同时,Docker Compose一个用于定义和运行多容器Docker应用程序的工具。使用Docker Compose可以轻松地启动和停止多个容器,并且可以通过一个简单的配置文件来定义容器之间的关系和依赖关系。在引用中提到的docker-compose启动mysql,是指使用Docker Compose启动一个MySQL数据库容器。通过配置docker-compose.yml文件,可以指定MySQL容器的镜像、端口、数据卷等信息。启动后,可以使用docker-compose ps命令查看容器状态,使用docker-compose stop命令停止容器,使用docker-compose restart命令重启容器,使用docker-compose down命令关闭容器并删除相关资源。除了使用Docker Compose,还可以使用其他方式来启动MySQL容器,如使用Helm启动MySQL高可用集群、使用Docker Compose启动单节点MySQL等。同时,还可以使用web管理工具如phpMyAdmin来管理MySQL数据库。在测试和开发环境中,使用Docker Compose启动MySQL容器可以方便地进行开发和测试。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值