仍然是Docker的新手,并尝试让Jetty webservice在容器内运行。 这是我目前的docker文件
配方
FROM maven:3.3-jdk-8-alpine
# Install packages
# To find packages to install see - https://pkgs.alpinelinux.org/packages
RUN apk add --no-cache curl tar bash wget apache-ant
RUN apk info
# Do any Maven configuration
ENV MAVEN_HOME /usr/share/maven
VOLUME "$USER_HOME_DIR/.m2"
ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2"
# Copy over project source files to the /tmp folder
COPY . /tmp/project
WORKDIR /tmp/project
# Preinstall any Maven depencencies
RUN mvn install -pl '!deb' -DskipTests
# Default command when running the docker image, can be overriden
CMD cd webapp/ && mvn jetty:run
在docker构建期间,我指定maven install
来安装项目的所有依赖项,并从源代码为每个模块构建jar。
但是当然后运行docker容器时,它仍然会尝试重新安装所有依赖项,然后失败,因为它无法找到我的api.jar文件
我的项目结构是这样的
项目结构 服务
错误
无法解决以下工件: com.foo.service:服务API:罐:1.14-SNAPSHOT
在容器外执行相同的步骤工作正常,并且jetty服务启动正常。任何想法如何解决?
答案 0 :(得分:4)
Maven定期检查SNAPSHOT依赖项的更新 - 默认情况下每天检查。但是你可以在你的settings.xml
Maven中禁用它。请参阅https://stackoverflow.com/a/3942048/2235015获取类似(但反转)案例的答案,并查看http://maven.apache.org/ref/3.2.2/maven-settings/settings.html(搜索updatePolicy
)。
settings.xml
中的示例存储库设置:
<repository>
<id>snapshots</id>
<url>http://host/nexus/repos/snapshots</url>
<snapshots>
<updatePolicy>never</updatePolicy>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</repository>