后端

创建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 服务器的配置文件。以下是一般步骤:
  1. 找到 Redis 服务器的配置文件。根据操作系统和安装方式的不同,配置文件的位置可能有所不同。通常,在 Linux 上,Redis 的配置文件位于 /etc/redis/ 目录下,文件名为 redis.conf;在 Windows 上,默认安装位置为 Redis 安装目录下的 redis.windows.conf

  2. 使用文本编辑器打开 Redis 配置文件。

  3. 在配置文件中搜索 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 地址。

  4. 保存并关闭文件。

  5. 重新启动 Redis 服务器,以使更改生效。

请注意,更改 Redis 的 IP 绑定后,需要确保 Redis 服务器与所需的 IP 地址之间存在有效的网络连接,以便从远程访问 Redis 服务器。同时,建议在安全性考虑下限制来自外部的访问,并及时更新防火墙和安全组规则以保护 Redis 实例的安全。

要重启 Redis,您可以按照以下步骤进行操作:
  1. 打开命令行界面或终端。

  2. 运行以下命令来停止 Redis 服务器:

    redis-cli shutdown
    

    这将发送停止命令给 Redis 服务器,并使其正常关闭。

  3. 等待 Redis 服务器完全停止。您可以通过尝试发出新的 Redis 命令来确保服务器已停止,如果服务器已关闭,则将无法执行命令。

  4. 启动 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,请参考相应的文档或指南。

  5. 验证 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 文件,并根据文件中的配置启动所有定义的容器。

点击阅读全文
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐