当前,我正在使用不支持多版本的docker ee。所以我正在使用命名卷来存储来自一个容器的数据,并将相同的数据用于另一个容器。 我制作了2个Docker文件,其中1个docker文件从git存储库获取项目,在第2个文件中,它使用maven运行该项目。 事情是当您分别运行它们时,它工作正常,但后来我尝试使用docker-compose,它无法从私有nexus存储库下载依赖项。我是否必须在docker-compose文件中提供任何内容才能从私有关系中提取依赖项存储库。它显示未知的主机存储库
Dockerfile_git-
FROM alpine/git
MAINTAINER Tejas
RUN mkdir /root/.ssh/
ADD id_rsa /root/.ssh/id_rsa
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan <<host>> >> ~/.ssh/known_hosts
WORKDIR /share
RUN git clone <<url>>
Dockerfile_mvn-
FROM maven:3.5-jdk-8-alpine
MAINTAINER Tejas
WORKDIR /share/trainingcontainers/
RUN echo $MAVEN_HOME
RUN rm -f $MAVEN_HOME/conf/settings.xml
COPY ./settings.xml $MAVEN_HOME/conf/
WORKDIR /share/trainingcontainers/selenium-grid/Website_Login
CMD mvn clean install
version: "3"
services:
task1:
build:
context: .
dockerfile: Dockerfile_git
volumes:
- "myshare2:/share"
task2:
build:
context: .
dockerfile: Dockerfile_mvn
volumes:
- "myshare2:/share"
volumes:
myshare2:
撰写文件日志-
task2_1 | [INFO] --------------------< Website_Login:Website_Login >---------------------
task2_1 | [INFO] Building Website_Login 0.0.1-SNAPSHOT
task2_1 | [INFO] --------------------------------[ jar ]---------------------------------
task2_1 | Downloading from nexus: http://<<hostname>>/repository/maven-public/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
task2_1 | [INFO] ------------------------------------------------------------------------
task2_1 | [INFO] BUILD FAILURE
task2_1 | [INFO] ------------------------------------------------------------------------
task2_1 | [INFO] Total time: 6.003 s
task2_1 | [INFO] Finished at: 2019-04-01T10:15:01Z
task2_1 | [INFO] ------------------------------------------------------------------------
task2_1 | [ERROR] Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to nexus (http://<<hostname>>/repository/maven-public/): <<hostname>>: Try again: Unknown host <<hostname>>: Try again -> [Help 1]
settings.xml-
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://<<hostname>>/repository/maven-public/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
http://localhost:9000
</sonar.host.url>
</properties>
</profile>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
答案 0 :(得分:0)
您说单独运行它们时,它们可以正常工作。您可以发布用于该命令的命令吗?
可能是您在其中使用了未放入docker-compose中的参数。
另一件事:docker-compose创建自己的网络,该网络通常是桥接网络,但在您的计算机上可能具有不同的设置。您可以检查计算机上配置的网络:
docker network ls
答案 1 :(得分:0)
当从 Dockerfile 构建映像时,您可以使用environemnt变量动态传递值,如here所示。
类似地,您可以使用 args 将变量从 compose.yml 传递到其启动的容器,如下所示(从here引用):>
services:
web:
build:
context: .
args:
var1: c
var2: d
现在,“ var1”和“ var2”将被发送到构建环境。
此外,您也可以尝试以下方法,因为 docker-compose 还支持变量替换(Reference)。
Compose使用运行 docker-compose 的shell环境中的变量值。例如,假设外壳包含HOST_NAME=test.org
,并且您在docker-compose.yml文件中提供了以下配置:
db:
image: "test:${HOST_NAME}"
答案 2 :(得分:0)
最后找到了您只需添加以下行的解决方案-
network_mode:“网桥”
根据我的docker compose文件-
version: "3"
services:
task1:
build:
context: .
dockerfile: Dockerfile_git
volumes:
- "myshare2:/share"
task2:
build:
context: .
dockerfile: Dockerfile_mvn
network_mode: "bridge"
volumes:
- "myshare2:/share"
volumes:
myshare2: