2016-10-07 6 views
2

Я тестирую инженера по автоматизации и работаю в крупной продуктовой компании. Компании большой монолитный проект разделяется, и части улетают в облака. В рамках такой реорганизации проекты автоматизации тестирования также должны облачно. Наш типичный проект TA, основанный на groovy, selenium, testng и maven. Теперь я хочу попробовать вариант полного проекта TA maven в Docker image \ container. Он работает хорошо, но при первом запуске он запускает загрузку зависимостей в локальный репозиторий .m2. Я хочу ускорить работу и выполнить эту задачу на стадии создания изображения.Как сохранить изменения, сделанные зависимостью от maven: go-offline in docker image

Вот мой DOCKERFILE:

FROM maven:3.3-jdk-8 
LABEL description="Embedded portal-web-testing" 
MAINTAINER NNN 
COPY ./settings.xml /root/.m2/ 
COPY ./acceptance-tests ./acceptance-tests 
WORKDIR acceptance-tests 
RUN mvn dependency:go-offline --debug >log 
RUN ls /root/.m2/ 
#RUN mvn test 
ENTRYPOINT ["bash"] 

А вот журнал:

Step 1 : FROM maven:3.3-jdk-8 
---> 7addddbdd730 
Step 2 : LABEL description "Embedded portal-web-testing" 
---> Running in 1d195ccb9c57 
---> f5372b024ca0 
Removing intermediate container 1d195ccb9c57 
Step 3 : MAINTAINER NNN 
---> Running in 03ebbffda680 
---> cb12da3d8ec6 
Removing intermediate container 03ebbffda680 
Step 4 : COPY ./settings.xml /root/.m2/ 
---> 164999e1f63a 
Removing intermediate container 1e1778d2533b 
Step 5 : COPY ./acceptance-tests ./acceptance-tests 
---> 7d93fff4193e 
Removing intermediate container a5d04eb30591 
Step 6 : WORKDIR acceptance-tests 
---> Running in f15111475fc6 
---> beb4d090362b 
Removing intermediate container f15111475fc6 
Step 7 : RUN mvn dependency:go-offline --debug >log 
---> Running in 2c09f1869143 
---> 62326c2bb073 
Removing intermediate container 2c09f1869143 
Step 8 : RUN ls /root/.m2/ 
---> Running in 91b602f529da 
settings.xml 
---> b7bc32199ab3 
Removing intermediate container 91b602f529da 
Step 9 : ENTRYPOINT bash 
---> Running in 3167f5a6d923 
---> 94b3e0b146da 
Removing intermediate container 3167f5a6d923 
Successfully built 94b3e0b146da 

На шаге 7, конечно, файлы загружаются, но выглядит не сохраняются. После консольная команда показывает, что нет обновлений в локальной папке .m2:

[email protected]:/acceptance-tests# ls /root/.m2 
settings.xml 

Если я пытаюсь запустить ту же команду снова из командной строки внутри контейнера (когда изображение создается и контейнер был запущен):

[email protected]:/acceptance-tests# mvn dependency:go-offline 

Массивные загрузки начинается и папки хранилища, наконец, появился под .m2

[email protected]:/acceptance-tests# ls /root/.m2 
repository settings.xml 

Я борюсь, чтобы понять, почему изменения вызваны по команде maven из файла Dockerbuild не хранится в качестве уровня докеров.

Я использую Docker 1.12 и Maven 3.3.3

ответ

-1

/root/.m2 является объем, поэтому он очищается, когда докер контейнер запускается. Этого можно избежать, кэшируя содержимое в пользовательском каталоге, а затем копируя его до /root/.m2 при запуске контейнера.

К счастью Maven изображения предварительно запеченный со всей копировальной логикой, так что вы просто должны указать хранилище как:

RUN mvn -B -f /tmp/pom.xml -s /usr/share/maven/ref/settings-docker.xml dependency:resolve

точка входа будет заботиться о настройке локального репозитория для вас. Это помогло мне надеяться, что это поможет вам.

Также для справки visit.

+1

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/15668438) –

+0

Спасибо. Я обновил свой ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^