<dependency>
<groupId>com.transwarpgroupId>
<artifactId>inceptor-driverartifactId>
<version>8.31.2version>
<scope>systemscope>
<systemPath>${project.basedir}/lib/inceptor-driver-8.31.2.jarsystemPath>
dependency>
通过mvn:install将本地文件安装到本地仓库,docker builder构建时提示无法找到对应的文件,写这文章的时候想通了,我只在宿主机安装了,没有在docker builder 执行安装,放到镜像内的maven仓库,所以在执行docker builder的时候会报错找不到这个镜像
宿主机上的命令如下:
mvn install:install-file \
-Dfile=lib/inceptor-driver-8.31.2.jar \
-DgroupId=com.transwarp \
-DartifactId=inceptor-driver \
-Dversion=8.31.2 \
-Dpackaging=jar
……
<repositories>
<repository>
<id>maven-publicid>
<name>Maven Public Repositoryname>
<url>http://x.x.x.x:xxxx/repository/maven-public/url>
<releases>
<enabled>trueenabled>
releases>
<snapshots>
<enabled>falseenabled>
snapshots>
repository>
repositories>
<dependencies>
<dependency>
<groupId>com.transwarpgroupId>
<artifactId>inceptor-driverartifactId>
<version>8.31.2version>
dependency>
……
dependencies>
<build>
<plugins>
……
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-shade-pluginartifactId>
<version>3.2.4version>
<executions>
<execution>
<phase>packagephase>
<goals>
<goal>shadegoal>
goals>
<configuration>
<createDependencyReducedPom>falsecreateDependencyReducedPom>
<minimizeJar>falseminimizeJar>
<shadedArtifactAttached>trueshadedArtifactAttached>
<shadedClassifierName>with-dependenciesshadedClassifierName>
<filters>
<filter>
<artifact>*:*artifact>
<excludes>
<exclude>META-INF/*.SFexclude>
<exclude>META-INF/*.DSAexclude>
<exclude>META-INF/*.RSAexclude>
excludes>
filter>
filters>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>argo.db.connect.example.MainmainClass>
transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
<addHeader>falseaddHeader>
transformer>
transformers>
<artifactSet>
<includes>
<include>*:*include>
includes>
artifactSet>
configuration>
execution>
executions>
plugin>
<plugin>
<groupId>org.codehaus.mojogroupId>
<artifactId>exec-maven-pluginartifactId>
<version>3.1.0version>
<configuration>
<classpathScope>systemclasspathScope>
configuration>
plugin>
plugins>
build>
project>
# -----------
# 构建阶段
# -----------
FROM maven:eclipse-temurin AS builder
# 设置工作目录
WORKDIR /build
# 配置阿里云镜像源
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \
sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list
# 配置 Maven settings.xml
RUN mkdir -p /root/.m2 && \
echo '' > /root/.m2/settings.xml && \
echo ' >> /root/.m2/settings.xml && \
echo ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' >> /root/.m2/settings.xml && \
echo ' xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">' >> /root/.m2/settings.xml && \
# 启用私仓mirror
echo ' ' >> /root/.m2/settings.xml && \
echo ' ' >> /root/.m2/settings.xml && \
echo ' maven-public ' >> /root/.m2/settings.xml && \
echo ' central,!plugin-central ' >> /root/.m2/settings.xml && \
# 记得使用public URL,本地私仓和互联网仓库合并的group
echo ' http://x.x.x.x:xxxx/repository/maven-public/ ' >> /root/.m2/settings.xml && \
echo ' ' >> /root/.m2/settings.xml && \
echo ' ' >> /root/.m2/settings.xml && \
# 允许私仓的http协议访问
echo ' maven-default-http-blocker ' >> /root/.m2/settings.xml && \
echo ' external:http:* ' >> /root/.m2/settings.xml && \
echo ' Pseudo repository to mirror external repositories initially using HTTP. ' >> /root/.m2/settings.xml && \
echo ' http://x.x.x.x:xxxx/ ' >> /root/.m2/settings.xml && \
echo ' false ' >> /root/.m2/settings.xml && \
echo ' ' >> /root/.m2/settings.xml && \
echo ' ' >> /root/.m2/settings.xml && \
echo ' ' >> /root/.m2/settings.xml
# 复制 pom.xml 和 lib 目录
COPY pom.xml .
COPY lib/ lib/
# 复制源代码
COPY src/ src/
# 构建项目
RUN mvn clean package
# -----------
# 运行阶段
# -----------
FROM eclipse-temurin
# 设置工作目录
WORKDIR /app
# 从构建阶段复制构建好的 jar 文件
COPY --from=builder /build/target/argo-db-connect-example-1.0-SNAPSHOT-with-dependencies.jar /app/app.jar
# 暴露端口
EXPOSE 8080
# 运行应用
ENTRYPOINT ["java", "-Xmx512m", "-Xms256m", "-cp", ".", "-jar", "app.jar"]
# 允许传参进入容器内的Java进程,使用方法docker run -it -p 8080:8080 argo-db-connect-example:latest "jdbc:transwarp2://x.x.x.x:10000/dwd;user=xxxx;password=xxxx"
CMD ["jdbc:transwarp2://x.x.x.x:10000/dwd;user=xxxx;password=xxxx"]
docker save argo-db-connect-example | gzip > argo-db-connect-example.tgz