
Docker打包spring boot+MySQL+vue+redis项目详解
是放在spring boot项目,与pom.xml文件同级创建settings.xml文件,将wsl的maven修改成阿里云的源,内容如下
后端
创建settings.xml文件
是放在spring boot项目,与pom.xml文件同级
创建settings.xml文件,将wsl的maven修改成阿里云的源,内容如下
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>central repo</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>apache snapshots</mirrorOf>
<name>阿里云阿帕奇仓库</name>
<url>https://maven.aliyun.com/repository/apache-snapshots</url>
</mirror>
</mirrors>
<proxies/>
<activeProfiles/>
<profiles>
<profile>
<repositories>
<repository>
<id>aliyunmaven</id>
<name>aliyunmaven</name>
<url>https://maven.aliyun.com/repository/public</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>MavenCentral</id>
<url>http://repo1.maven.org/maven2/</url>
</repository>
<repository>
<id>aliyunmavenApache</id>
<url>https://maven.aliyun.com/repository/apache-snapshots</url>
</repository>
</repositories>
</profile>
</profiles>
</settings>
创建Dockerfile文件
版本1(失败)
# syntax=docker/dockerfile:1
# FROM eclipse-temurin:17-jdk-jammy
# WORKDIR /app
# COPY .mvn/ .mvn
# COPY mvnw pom.xml ./
# RUN mvn dependency:resolve
# COPY src ./src
# CMD ["./mvnw", "spring-boot:run"]
版本2(打包、运行成功)(缺点:只能打jar包再构建镜像,不符合)
# syntax=docker/dockerfile:1
# 版本2(打包、运行成功)----------------------------------------------------(缺点:只能打jar包再构建镜像,不符合)------------------------
# # 使用OpenJDK 11作为基础镜像
# FROM adoptopenjdk:11-jre-hotspot
# # 设置工作目录
# WORKDIR /app
# # 将编译好的jar文件复制到镜像中
# COPY FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar /app/FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar
# # 暴露Spring Boot应用程序的端口
# EXPOSE 9999
# # 设置容器启动时的默认命令
# CMD ["java", "-jar", "/app/FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar"]
版本3(打包成功,运行失败,redis下载失败)(已解决运行失败,详情请看版本5)
# 版本3(打包成功,运行失败,redis下载失败)----------------------------------------------------(已解决运行失败,详情请看版本5)------------
# # 第一阶段:构建Spring Boot项目
# FROM maven:3.8.3-openjdk-11 AS builder
# WORKDIR /app
# # 复制项目代码到容器中
# COPY . .
# # settings.xml文件拷贝进入Maven的Docker镜像内部。
# COPY settings.xml /usr/share/maven/conf/settings.xml
# # 构建项目
# RUN mvn clean package -DskipTests
# # 第二阶段:运行Spring Boot应用程序
# FROM openjdk:11-jre-slim
# WORKDIR /app
# # 复制编译好的JAR文件到容器中
# COPY --from=builder /app/target/FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar app.jar
# # 将软件源更换为阿里云镜像源
# RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# # 安装Redis服务
# # RUN apt-get update
# # RUN apt-get install -y redis-server
# # 暴露Spring Boot应用程序的端口
# EXPOSE 8080
# # 启动Spring Boot应用程序和Redis服务
# CMD ["java", "-jar", "FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar"]
版本5(打包成功,运行成功,redis下载失败)
# syntax=docker/dockerfile:1
# 版本5(打包成功,运行成功,redis下载失败)-------------------------------------------------------------------------------------------
# # 第一阶段:构建Spring Boot项目
# FROM maven:3.8.3-openjdk-11 AS builder
# WORKDIR /app
# # 复制项目代码到容器中
# COPY . .
# # settings.xml文件拷贝进入Maven的Docker镜像内部。
# COPY settings.xml /usr/share/maven/conf/settings.xml
# # 构建项目
# # 如果想改名的话
# #RUN mvn clean package -DskipTests && \
# # mv /mnt/d/docker/ffe_bms/Souces/FFE-BMS.ApiServer/FFE-BMS.BackgroundProgramApiServer/target/<pom.xml里预设的名>.jar /mnt/d/docker/ffe_bms/Souces/FFE-BMS.ApiServer/FFE-BMS.BackgroundProgramApiServer/target/<你想改的名>.jar
# RUN mvn clean package -DskipTests
# # 第二阶段:运行Spring Boot应用程序
# FROM openjdk:11-jre-slim
# WORKDIR /app
# # 复制编译好的JAR文件到容器中
# COPY --from=builder /app/target/FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar
# # 将软件源更换为阿里云镜像源
# RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# # 安装Redis服务
# RUN apt-get update && sudo apt-get install -y redis-server
# # 暴露Spring Boot应用程序的端口 ps:是项目配置的端口
# EXPOSE 9999
# # 启动Spring Boot应用程序和Redis服务
# CMD ["java", "-jar", "FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar"]
版本6(打包成功,运行成功,redis运行失败
# syntax=docker/dockerfile:1
# 版本6(打包成功,运行成功,redis运行失败)-----------------------------------------------------------------------------------------------
# # 第一阶段:构建Spring Boot项目
# FROM maven:3.8.3-openjdk-11 AS builder
# WORKDIR /app
# # 复制项目代码到容器中
# COPY . .
# # settings.xml文件拷贝进入Maven的Docker镜像内部。
# COPY settings.xml /usr/share/maven/conf/settings.xml
# # 构建项目
# RUN mvn clean package -DskipTests
# # 第二阶段:构建Redis容器
# FROM redis:latest AS redis
# # 将软件源更换为阿里云镜像源
# RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# # 安装Redis依赖
# RUN apt-get update && apt-get install -y redis-server
# # 设置Redis配置文件
# COPY redis.conf /etc/redis/redis.conf
# # 第三阶段:运行Spring Boot应用程序
# FROM openjdk:11-jre-slim
# # 复制编译好的JAR文件到容器中
# COPY --from=builder /app/target/FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar
# # 暴露Spring Boot应用程序的端口 ps:是项目配置的端口
# # EXPOSE 9999
# # 暴露 Redis 默认端口
# EXPOSE 6379
# # 启动Redis服务
# CMD ["redis-server", "/etc/redis/redis.conf"]
# # 启动Spring Boot应用程序
# ENTRYPOINT ["java", "-jar", "FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar"]
版本7(打包成功,运行成功,redis成功)(缺点:MySQL与redis连接的是本机,理想情况需要分别构建MySQL与redis容器)
# syntax=docker/dockerfile:1
# 版本7(打包成功,运行成功,redis成功)--------------(缺点:MySQL与redis连接的是本机,理想情况需要分别构建MySQL与redis容器)--------------------------------------------------------------------------------
# 第一阶段:构建Spring Boot应用程序,这里使用Maven构建项目并将jar文件放在/app目录下。
# 构建Spring Boot应用程序
FROM maven:3.8.1-openjdk-11 AS builder
WORKDIR /app
# 将项目的pom.xml文件和src目录复制到容器中
COPY pom.xml .
COPY src/ ./src/
# settings.xml文件拷贝进入Maven的Docker镜像内部。
COPY settings.xml /usr/share/maven/conf/settings.xml
# 构建应用程序
RUN mvn package -DskipTests
RUN mv target/*.jar FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar
# 第二阶段:构建MySQL容器,我们设置了MySQL的root密码和数据库名称。
# 构建MySQL容器
FROM mysql:latest AS mysql-container
ENV MYSQL_ROOT_PASSWORD 12345
ENV MYSQL_DATABASE root
# 第三阶段:构建Redis容器
FROM redis:latest AS redis-container
# 第四阶段:最终阶段,将Spring Boot应用程序jar文件复制到容器中,并暴露9999端口。然后,我们设置了连接MySQL和Redis所需要的环境变量,并最后通过CMD命令运行Spring Boot应用程序。
# 运行Spring Boot应用程序容器
FROM openjdk:11-jre-slim
COPY --from=builder /app/FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar
EXPOSE 9999
# 配置MySQL和Redis连接信息
ENV SPRING_DATASOURCE_URL jdbc:mysql://192.168.2.166:3306/lzft_fresh_electricity_supplier
ENV SPRING_DATASOURCE_USERNAME root
ENV SPRING_DATASOURCE_PASSWORD 12345
ENV SPRING_REDIS_HOST 192.168.2.166
ENV SPRING_REDIS_PORT 6379
-------------------->插入1
# 运行Spring Boot应用程序
CMD ["java", "-jar", "FFE-BMS.BackgroundProgramApiServer-0.0.1-SNAPSHOT.jar"]
虽然版本7已经比较符合了,但是最终理想应该是docker多容器
镜像中的redis如何连接本机的redis服务
要更改 Redis 的 IP 绑定,您需要编辑 Redis 服务器的配置文件。以下是一般步骤:
-
找到 Redis 服务器的配置文件。根据操作系统和安装方式的不同,配置文件的位置可能有所不同。通常,在 Linux 上,Redis 的配置文件位于
/etc/redis/
目录下,文件名为redis.conf
;在 Windows 上,默认安装位置为 Redis 安装目录下的redis.windows.conf
。 -
使用文本编辑器打开 Redis 配置文件。
-
在配置文件中搜索
bind
参数。bind
参数用于指定 Redis 监听的 IP 地址。默认情况下,它绑定在127.0.0.1
上,即只能本地访问。如果您希望允许来自其他 IP 的连接,您需要将其更改为相应的 IP 地址或修改为通配符0.0.0.0
,表示接受来自任何 IP 的连接。例如:bind 0.0.0.0
或者您可以指定特定的 IP 地址,例如:
bind 192.168.0.100
如果 Redis 服务器有多个 IP 地址(多个网络接口),您可以指定需要绑定的具体 IP 地址。
-
保存并关闭文件。
-
重新启动 Redis 服务器,以使更改生效。
请注意,更改 Redis 的 IP 绑定后,需要确保 Redis 服务器与所需的 IP 地址之间存在有效的网络连接,以便从远程访问 Redis 服务器。同时,建议在安全性考虑下限制来自外部的访问,并及时更新防火墙和安全组规则以保护 Redis 实例的安全。
要重启 Redis,您可以按照以下步骤进行操作:
-
打开命令行界面或终端。
-
运行以下命令来停止 Redis 服务器:
redis-cli shutdown
这将发送停止命令给 Redis 服务器,并使其正常关闭。
-
等待 Redis 服务器完全停止。您可以通过尝试发出新的 Redis 命令来确保服务器已停止,如果服务器已关闭,则将无法执行命令。
-
启动 Redis 服务器。具体启动 Redis 的方法取决于您的操作系统和安装方式。以下是一些常见的启动 Redis 服务器的方法:
-
如果您是通过 Linux 系统包、源码编译或 Docker 容器安装的 Redis,可以运行以下命令启动 Redis 服务器:
redis-server /path/to/redis.conf
将
/path/to/redis.conf
替换为 Redis 的配置文件路径。 -
如果您是在 Windows 上安装的 Redis,可以打开一个新的命令行窗口,导航到 Redis 的安装目录,然后运行以下命令启动 Redis 服务器:
redis-server.exe redis.windows.conf
-
如果您使用的是其他自动化方式或管理工具启动 Redis,请参考相应的文档或指南。
-
-
验证 Redis 服务器已成功启动。您可以运行
redis-cli
命令来打开 Redis CLI,并执行一些 Redis 命令来确认服务器正常工作。
请注意,在进行 Redis 服务器的重启操作时,确保您已保存并备份了重要的 Redis 数据,以免发生数据丢失。
版本7(多容器版本,即分为prringboot容器、MySQL容器、redis容器)
创建compose.yaml
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql-container
restart: always
environment:
MYSQL_ROOT_PASSWORD: 12345
MYSQL_DATABASE: lzft_fresh_electricity_supplier
volumes:
- mysql-data:/var/lib/mysql
- ./lzft_fresh_electricity_supplier.sql:/docker-entrypoint-initdb.d/lzft_fresh_electricity_supplier.sql
networks:
- backend
redis:
image: redis:latest
container_name: redis-container
restart: always
volumes:
- redis-data:/data
networks:
- backend
springboot:
build:
context: .
dockerfile: Dockerfile
container_name: springboot-container
restart: always
depends_on:
- mysql
- redis
networks:
- backend
ports:
- "9999:9999"
vue:
build:
context: ./vue-app
dockerfile: Dockerfile
restart: always
networks:
- backend
ports:
- "8888:8888"
volumes:
mysql-data:
redis-data:
networks:
backend:
启动
docker-compose up
这个命令会读取当前目录下的 docker-compose.yaml
文件,并根据文件中的配置启动所有定义的容器。
更多推荐
所有评论(0)