1

我将我的 hub.docker.com 帐户与 bitbucket.org 链接以进行自动构建。在我的存储库的核心文件夹中存在 Dockerfile,它位于 2 个映像构建步骤中。如果我在本地(我的意思是在 Windows 中)构建基于相同 Dockerfile 的图像,我会得到 2 个不同的图像。但是,如果我将使用 hub.docker.com 进行构建,则只会保存最后一个图像并标记为“最新”。

Dockerfile:

#-------------First image ----------
FROM nginx 

#-------Adding html files
RUN mkdir /usr/share/nginx/s1
COPY content/s1 /usr/share/nginx/s1
RUN mkdir /usr/share/nginx/s2
COPY content/s2 /usr/share/nginx/s2

# ----------Adding conf file
RUN rm -v /etc/nginx/nginx.conf
COPY conf/nginx.conf /etc/nginx/nginx.conf

RUN service nginx start


# ------Second image -----------------
# Start with a base image containing Java runtime
FROM openjdk:8-jdk-alpine

# Add a volume pointing to /tmp
VOLUME /tmp

# Make port 8080 available to the world outside this container
EXPOSE 8080

# The application's jar file
ARG JAR_FILE=jar/testbootstap-0.0.1-SNAPSHOT.jar

# Add the application's jar to the container
ADD ${JAR_FILE} test.jar

# Run the jar file 
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/test.jar"]

以前有人这样做过还是不可能?

PS:免费使用的私有仓库只有一个,可能是主要原因。

4

2 回答 2

2

每当您在 Dockerfile 中指定一秒FROM时,您就开始创建一个新映像。这就是为什么您只看到最后一张图像被保存和标记的原因。

您可以通过创建多个 Dockerfile 来完成您想要的操作,即通过在其 Dockerfile 中创建第一个图像,然后使用它来创建第二个图像——所有这些都docker-compose用于协调容器之间的关系。

于 2018-10-08T07:59:17.603 回答
0

我找到了一些解决这个问题的方法。

  1. 我将 docker 文件分成两个文件。

         1.docker for ngix  
         2.docker for java app
    
  2. 在构建设置中,将这两个文件设置为 dockerfile 和带有不同标签的标签。 在此处输入图像描述

  3. 构建后,您有一个图像,但版本被定义为图像名称。例如,您可以使用

     for nginx server youraccount/test:nginx   
     for app image youraccount/test:java
    

在此处输入图像描述

在此处输入图像描述 我希望这在以后的过程中不会有问题。

于 2018-10-08T08:45:56.747 回答