Docker 自动构建的多图像
Multi image with Docker automated build
我 link 我的 hub.docker.com 帐户 bitbucket.org 用于自动构建。在我的存储库的核心文件夹中存在 Dockerfile,它位于 2 个映像构建步骤中。如果我在本地构建基于相同 Dockerfile 的图像(我的意思是在 Windows 中),我会得到 2 个不同的图像。但是如果我将使用 hub.docker.com 进行构建,则只会保存最后一张图像并将其标记为 "latest"。
Docker 文件:
#-------------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: 只有一个私有仓库可以免费使用,可能这是主要原因。
每当您在 Dockerfile 中指定第二个 FROM
时,您就会开始创建一个新映像。这就是为什么您只看到最后一张图像被保存和标记的原因。
您可以通过创建多个 Dockerfile 来完成您想要的,即通过在其 Dockerfile 中创建第一个图像,然后使用它来创建第二个图像——所有这些都使用 docker-compose
来协调容器。
我找到了解决这个问题的方法。
我将 docker 文件分成两个文件。
1.docker for ngix
2.docker for java app
在构建设置中将这两个文件设置为 dockerfile 和 tag 不同的标签。
构建后你有一个图像,但版本定义为图像名称。例如,您可以使用
for nginx server youraccount/test:nginx
for app image youraccount/test:java
我希望这在以后的过程中不会有问题。
我 link 我的 hub.docker.com 帐户 bitbucket.org 用于自动构建。在我的存储库的核心文件夹中存在 Dockerfile,它位于 2 个映像构建步骤中。如果我在本地构建基于相同 Dockerfile 的图像(我的意思是在 Windows 中),我会得到 2 个不同的图像。但是如果我将使用 hub.docker.com 进行构建,则只会保存最后一张图像并将其标记为 "latest"。
Docker 文件:
#-------------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: 只有一个私有仓库可以免费使用,可能这是主要原因。
每当您在 Dockerfile 中指定第二个 FROM
时,您就会开始创建一个新映像。这就是为什么您只看到最后一张图像被保存和标记的原因。
您可以通过创建多个 Dockerfile 来完成您想要的,即通过在其 Dockerfile 中创建第一个图像,然后使用它来创建第二个图像——所有这些都使用 docker-compose
来协调容器。
我找到了解决这个问题的方法。
我将 docker 文件分成两个文件。
1.docker for ngix 2.docker for java app
在构建设置中将这两个文件设置为 dockerfile 和 tag 不同的标签。
构建后你有一个图像,但版本定义为图像名称。例如,您可以使用
for nginx server youraccount/test:nginx for app image youraccount/test:java