Я просто новичок во Docker вселенной. Я использую его для автоматизации установки проектов WordPress на локальные машины для разработчиков.
- В теме WordPress используются composer, npm, bower и gulp
- Я создал том чтобы смонтировать исходный код в контейнер.
- Как и в среде разработки, разработчик должен иметь возможность добавлять плагины и библиотеки.
Итак:
, если он запускает npm install library_x --save
в контейнере, информация будет потеряна (в package.json
и в директории node_modules
), когда docker - составить вниз.
если он запускает его на своем хосте, возможно, у него не установлено npm.
1. Как справиться с этим делом?
связанные задачи:
- Мне нужно сохранить
node_modules
, vendor
, bower_components
в изображении когда package.json
, composer.json
изменяется - или запускается
npm install
, composer install
... на каждом docker-compose up
.
2. Какова лучшая практика и как я могу это сделать?
Вот служба на docker-compose.yml
wordpress :
build:
context: .
dockerfile: ./docker/wp/Dockerfile
args:
THEME_DIR_NAME: ${THEME_DIR_NAME}
depends_on:
- database
ports:
- ${WP_PORT}:80
environment:
WORDPRESS_DB_HOST: database
WORDPRESS_DB_USER: ${DATABASE_USER}
WORDPRESS_DB_PASSWORD: ${DATABASE_PASSWORD}
WORDPRESS_DB_NAME: ${DATABASE_NAME}
WORDPRESS_TABLE_PREFIX: ${DATABASE_TABLE_PREFIX}
volumes:
- '.:/var/www/html/wp-content/themes/${THEME_DIR_NAME}'
- '/var/www/html/wp-content/themes/${THEME_DIR_NAME}/vendor'
- '/var/www/html/wp-content/themes/${THEME_DIR_NAME}/node_modules'
- '/var/www/html/wp-content/themes/${THEME_DIR_NAME}/bower_components'
- '/var/www/html/wp-content/themes/${THEME_DIR_NAME}/dist'
- ./plugins:/var/www/html/wp-content/plugins
и соответствующий Dockerfile
FROM wordpress:5.3.2-php7.2-apache
ARG THEME_DIR_NAME
COPY . /var/www/html/wp-content/themes/$THEME_DIR_NAME/
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer && \
apt-get update && \
apt-get install -y git && \
apt install -y python-minimal && \
curl -sL https://deb.nodesource.com/setup_10.x | bash - && \
apt-get install nodejs -y && \
curl -L https://npmjs.org/install.sh | sh && \
npm install -g bower && \
npm install -g gulp && \
mkdir /var/www/html/wp-content/uploads && \
chmod -R 777 /var/www/html/wp-content/uploads && \
cd /var/www/html/wp-content/themes/${THEME_DIR_NAME} && \
composer install && \
npm install && \
bower install --allow-root && \
gulp
Большое вам спасибо!