docker 部署springboot项目与mysql,springboot连接容器的mysql, docker内进行多环境切换

编写docker-compose

因为我先在windows的docker部署看看有无问题, 再部署到服务器上, 所以dev的环境指的是我windows的docker, prod指的是服务器上的


docker-compose-dev.yml

version: '3'
services:
  mysql:
    image: mysql:5.7
    restart: always
    container_name: brionac-mysql
    command: --character-set-server=utf8 --collation-server=utf8_general_ci
    environment:
      MYSQL_ROOT_PASSWORD:
    ports:
      - 3306:3306
    volumes:
      - D:\Temp\mydata\mysql\data:/var/lib/mysql #数据目录挂载
      - D:\Temp\mydata\mysql\conf:/etc/mysql/conf.d #启动脚本
  brionac-backend:
    container_name: brionac-backend
    build: ../brionac-backend #相对于你的dockercompose文件路径
    ports:
      - "8080:8081"  # 将主机的 8080 端口映射到服务的 8081 端口
    depends_on:
      - mysql

docker-compose-prod.yml

version: '3'  
services:  
  mysql:  
    image: mysql:5.7  
    restart: always  
    container_name: brionac-mysql  
    command: --character-set-server=utf8 --collation-server=utf8_general_ci  
    environment:  
      MYSQL_ROOT_PASSWORD: #修改为你的密码 
    ports:  
      - 3306:3306  
    volumes:  
      - /usr/project/mysql/data:/var/lib/mysql #数据目录挂载  
      - /usr/project/mysql/conf:/etc/mysql/conf.d #启动脚本  
  brionac-backend:  
    container_name: brionac-backend  
    build: ../brionac-backend  #相对于你的dockercompose文件路径
    ports:  
      - "8080:8080"  # 将主机的 8080 端口映射到服务的 8080 端口  
    depends_on:  
      - mysql

编写application

   application-dev.yaml

server:  
  port: 8081  
  
spring:  
  mvc:  
    pathmatch:  
      matching-strategy: ant_path_matcher  
  servlet:  
    multipart:  
      max-file-size: 100MB  
      max-request-size: 100MB  
      enabled: true  
  datasource:  
    driver-class-name: com.mysql.cj.jdbc.Driver  
    url: jdbc:mysql://localhost:3306/database_name?allowMultiQueries=true  
    username: root  
    password: 123456  

   application-prod.yaml

server:  
	# 更换端口, 加以区分环境
  port: 8080
spring:  
  mvc:  
    pathmatch:  
      matching-strategy: ant_path_matcher  
  servlet:  
    multipart:  
      max-file-size: 100MB  
      max-request-size: 100MB  
      enabled: true  
  datasource:  
    driver-class-name: com.mysql.cj.jdbc.Driver  

    #下面这里注意原本的ip要改为你的mysql容器名
    url: jdbc:mysql://brionac-mysql:3306/brionac?allowMultiQueries=true  

    username: root  
    # mysql容器的密码
    password: 

   application.properties

# 指定运行环境
spring.profiles.active=prod

编写Dockerfile

# 使用 OpenJDK 基础镜像
FROM openjdk:11-jre-slim

# 设置工作目录
WORKDIR /app

# 将构建好的 JAR 文件复制到镜像中
COPY target/brionac-backend-1.0-SNAPSHOT.jar /app/brionac-backend.jar

# 指定运行环境, 要注意改
ENV spring.profiles.active="prod"

# 指定容器启动时执行的命令
ENTRYPOINT ["java","-jar","brionac-backend.jar"]

切换环境

将Dockerfile文件的spring.profiles.active 和 application.properties的spring.profiles.active都要改为对应的环境即可

注意事项

  1. 切换环境时, Dockerfile文件的spring.profiles.active 和 application.properties的spring.profiles.active都要改为对应的环境
  2. 记得如果application文件有过改动, 则需要重新maven打包
  3. 都是docker的部署的项目, 连接的时候ip改为容器名, 这点在application-prod.yaml中有体现

附上项目目录结构

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用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的配置,更加方便和灵活。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值