Я связываю свою учетную запись hub.docker.com с bitbucket.org для автоматической сборки. В основной папке моего репозитория существует Dockerfile, который находится внутри двух этапов построения образа. Если я создаю образы на основе одного и того же Dockerfile локально (я имею в виду в Windows), я получаю 2 разных образа. Но если я буду использовать для сборки hub.docker.com, то будет сохранен только последний образ и помечен как «последний».

Докерфил:

#-------------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: Есть только один частный репозиторий для бесплатного использования, возможно, это основная причина.

1
vugar_saleh 8 Окт 2018 в 10:48

2 ответа

Лучший ответ

Я нашел обходной путь для этой проблемы.

  1. Я разделяю файл докера на два файла.

         1.docker for ngix  
         2.docker for java app
    
  2. В настройках сборки установите эти два файла как dockerfile и пометьте их разными тегами. введите описание изображения здесь

  3. После сборки у вас есть одно изображение, но версии определяются как имя изображения. Например, вы можете использовать

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

enter image description here

введите описание изображения здесь Я надеюсь, что это не будет проблемой в будущих процессах.

0
vugar_saleh 8 Окт 2018 в 08:45

Каждый раз, когда вы указываете второй FROM в своем Dockerfile, вы начинаете создавать новый образ. По этой причине вы видите только последнее сохраненное и помеченное изображение.

Вы можете выполнить то, что хотите, создав несколько файлов Docker, то есть создав первое изображение в своем файле Docker, а затем используя его для создания второго образа - все это с помощью docker-compose для координации между контейнерами.

2
gravetii 8 Окт 2018 в 07:59