原创 

spring boot 项目和mysql 生成为同一个 docker 镜像 并启动

分类:spring,运维    325人阅读    IT小君  2023-04-24 15:52

方案1:

将Spring Boot项目打包成Docker镜像并包含MySQL镜像,需要进行以下操作:

  1. 安装Docker:首先,你需要在你的计算机上安装Docker。你可以从Docker官方网站下载安装程序,并按照说明进行安装。

  2. 编写Dockerfile:在Spring Boot项目根目录下创建一个名为“Dockerfile”的文件,并编写以下内容:

### 构建Spring Boot应用 ###
FROM maven:3.6.3-jdk-8-slim AS build
RUN mkdir /app
WORKDIR /app
COPY . /app/
RUN mvn clean package

### 构建MySQL镜像 ###
FROM mysql:5.7
ENV MYSQL_ROOT_PASSWORD=root
ENV MYSQL_DATABASE=test
ADD test.sql /docker-entrypoint-initdb.d/test.sql

### 合并到一个镜像 ###
FROM openjdk:8-jre-alpine
COPY --from=build /app/target/your-app-name.jar /app/app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app/app.jar"]

其中,FROM maven:3.6.3-jdk-8-slim AS build用于构建Spring Boot应用,使用了Maven作为构建工具;FROM mysql:5.7用于构建MySQL镜像,指定了MySQL的版本和一些默认配置;ADD test.sql /docker-entrypoint-initdb.d/test.sql用于将MySQL初始化脚本添加到容器中;最后,COPY --from=build /app/target/your-app-name.jar /app/app.jar将之前构建的Spring Boot应用的Jar包复制到镜像中,ENTRYPOINT用于启动Spring Boot应用。

  1. 构建Docker镜像:在命令行终端中进入到Dockerfile所在目录,然后输入以下命令来构建Docker镜像:
 
docker build -t your-image-name .

这里your-image-name是你要给镜像起的名称,最后的.表示当前目录。Docker将根据Dockerfile文件中的指令来构建镜像。

  1. 运行Docker容器:完成Docker镜像的构建后,你可以使用以下命令来运行Docker容器
docker run -p 8080:8080 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=test --name mysql-container -d mysql:5.7

这里通过-e参数指定了MySQL的一些环境变量和配置,并且给容器取了一个名字叫做mysql-container。在运行时,Docker将自动启动Spring Boot应用,并将其绑定到本地的8080端口。此外,MySQL也会以容器的形式运行。

以上就是将Spring Boot项目打包成Docker镜像并包含MySQL镜像的步骤。希望能够帮助到你!

 

方案2:

将Spring Boot项目和MySQL打包成同一个Docker镜像,需要进行以下操作:

  1. 在Spring Boot项目的根目录下创建一个名为“Dockerfile”的文件,并编写以下内容:
FROM openjdk:8-jre-alpine
RUN apk update && apk add mysql-client
EXPOSE 8080
ADD target/your-app-name.jar app.jar
COPY ./docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]

其中,FROM openjdk:8-jre-alpine用于指定基础镜像,我们这里选择了Alpine Linux的OpenJDK 8;RUN apk update && apk add mysql-client用于安装MySQL客户端;ADD target/your-app-name.jar app.jar将Spring Boot应用的Jar包添加到镜像中;COPY ./docker-entrypoint.sh /用于将容器的启动脚本添加到镜像中;最后,ENTRYPOINT ["/docker-entrypoint.sh"]指定了容器启动时要运行的命令。

  1. 在Spring Boot项目的根目录下创建一个名为“docker-entrypoint.sh”的文件,并编写以下内容:
#!/bin/sh
set -e

# 启动MySQL服务
service mysql start

# 执行MySQL初始化脚本
mysql -uroot -p"$MYSQL_ROOT_PASSWORD" < test.sql &

# 启动Spring Boot应用
java -jar app.jar

其中,service mysql start用于启动MySQL服务;mysql -uroot -p"$MYSQL_ROOT_PASSWORD" < test.sql &用于执行MySQL初始化脚本(假设初始化脚本名为“test.sql”);最后,java -jar app.jar用于启动Spring Boot应用。

  1. 在Spring Boot项目中添加MySQL初始化脚本:

将MySQL初始化脚本(假设名为“test.sql”)放在Spring Boot项目的根目录下。

  1. 构建Docker镜像:

在命令行终端中进入到Dockerfile所在目录,然后输入以下命令来构建Docker镜像:

docker build -t your-image-name .

这里your-image-name是你要给镜像起的名称,最后的.表示当前目录。Docker将根据Dockerfile文件中的指令来构建镜像。

  1. 运行Docker容器:

完成Docker镜像的构建后,你可以使用以下命令来运行Docker容器:

 
docker run -p 8080:8080 -e MYSQL_ROOT_PASSWORD=123456 --name your-container-name your-image-name

这里通过-e参数指定了MySQL的ROOT用户密码,并且给容器取了一个名字叫做your-container-name。在运行时,Docker将自动启动Spring Boot应用和MySQL服务,并将它们打包成同一个镜像。

以上就是将Spring Boot项目和MySQL打包成同一个Docker镜像的步骤。希望能够帮助到你!

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

 工具推荐 更多»