Procházet zdrojové kódy

完美部署方案。

skyfffire před 2 měsíci
rodič
revize
a426e314a0
3 změnil soubory, kde provedl 36 přidání a 2 odebrání
  1. 13 2
      Dockerfile
  2. 8 0
      README.MD
  3. 15 0
      settings.xml

+ 13 - 2
Dockerfile

@@ -1,17 +1,28 @@
 # --- Stage 1: Build ---
 FROM maven:3.9.0-eclipse-temurin-8 as mvn
 WORKDIR /app
+
+# 1. 复制 settings.xml
+COPY settings.xml /root/.m2/settings.xml
+
+# 2. 只复制 pom.xml 文件
+COPY pom.xml .
+
+# 3. 仅下载依赖。只要 pom.xml 不变,这一层就会被缓存
+RUN mvn dependency:go-offline
+
+# 4. 复制所有项目文件
 COPY . .
+
+# 5. 执行打包(此时不会再下载依赖,速度很快)
 RUN mvn clean package -DskipTests
 
 # --- Stage 2: Runtime ---
 FROM openjdk:8-jre-slim
 WORKDIR /app
 
-# 只从构建阶段复制最终的 JAR 包
 COPY --from=mvn /app/target/dalian-nft-api.jar app.jar
 
 EXPOSE 8888
 
-# 启动命令保持不变
 ENTRYPOINT ["java", "-jar", "app.jar"]

+ 8 - 0
README.MD

@@ -38,3 +38,11 @@
 > 关键:配置端口映射<br>
 > 勾选 Bind ports。<br>
 > 添加一个映射,将服务器的端口(Host port)映射到容器的端口(Container port),例如 8080:8080。<br>
+
+
+
+服务器上一直pull不下来mysql/mysql-server:8.0
+索性使用mysql:8.0
+或者先pull再构建也可以,国内源是这样的,从2023年之后不稳定
+
+docker run -d --name mysql-container -p 33061:3306 -v /app/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxxxx -e MYSQL_ROOT_HOST=% mysql:8.0

+ 15 - 0
settings.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
+
+    <mirrors>
+        <mirror>
+            <id>aliyunmaven</id>
+            <mirrorOf>*</mirrorOf>
+            <name>Alibaba Cloud Maven Mirror</name>
+            <url>https://maven.aliyun.com/repository/public</url>
+        </mirror>
+    </mirrors>
+
+</settings>