Запуск установки bower внутри тома docker

#docker #polymer #bower

#docker #полимер #беседка

Вопрос:

Контекст

Итак, я пытаюсь выполнить сборку проекта polymer внутри контейнера docker в виде тома (для доступа к нему я использую docker run (...) --volume="/var/www/html:/var/www/html" --volumes-from="my-polymer-image-name" my-nginx-image ).

И я попытался выполнить следующий файл Dockerfile, но объявил том последним, но том был пуст, когда я попытался получить к нему доступ из «my-nginx-container» ( docker exec -ti my-nginx-image-name /bin/sh ).

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

Проблема

Но когда я попытался установить свои компоненты bower, я заметил, что bower_components каталог не создается.

 ########################################################
# Dockerfile to build Polymer project and move to server
# Based on oficial node Dockerfile
########################################################
FROM node:6

VOLUME /var/www/html

# Install polymer and bower
RUN npm install -g 
    polymer-cli 
    bower

# Add project to a temp folder to build it
RUN mkdir -p /var/www/html/temp
COPY . /var/www/html/temp
WORKDIR /var/www/html/temp
RUN ls -la
RUN bower install --allow-root # here is where I try to build my project
RUN polymer build

# Move to release folder
WORKDIR /var/www/html
RUN mv /var/www/html/temp/build/unbundled/* /var/www/html
RUN bower install --allow-root

# Remove temporary content
RUN rm -rf /var/www/html/temp
  

Ответ №1:

Монтирование тома после завершения сборки образа docker.

в последней строке файла Docker добавьте

 ENTRYPOINT ["/bin/bash", "/etc/entrypoint.sh"]
  

Используйте сценарий entripoint, подобный этому.

 #!/bin/bash
set -e #if error bash script will exit and stop docker image
cd /var/www/html/
bower install --allow-root
polymer build
mv /var/www/html/temp/build/unbundled/* /var/www/html
rm -rf /var/www/html/temp