原创 spring boot 项目和mysql 生成为同一个 docker 镜像 并启动
分类:spring,运维 99人阅读 IT小君 2023-04-24 15:52
方案1:
方案2:
将Spring Boot项目和MySQL打包成同一个Docker镜像,需要进行以下操作:
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"]
指定了容器启动时要运行的命令。
#!/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应用。
将MySQL初始化脚本(假设名为“test.sql”)放在Spring Boot项目的根目录下。
在命令行终端中进入到Dockerfile所在目录,然后输入以下命令来构建Docker镜像:
docker build -t your-image-name .
这里your-image-name
是你要给镜像起的名称,最后的.
表示当前目录。Docker将根据Dockerfile文件中的指令来构建镜像。
完成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镜像的步骤。希望能够帮助到你!