Поднимаю Drupal сайт на docker, а именно - docker4drupal (набор готовых образов php, nginx, mariadb и т.д.)
Нужно создать сабтему на основе Barrio Sass.
В инструкции на drupal.org пишет что для этой темы нужно установить node.js, gulp, и все необходимые зависимости для gulp чтобы он мог скомпилировать sass в css:
https://www.drupal.org/docs/contributed-themes/bootstrap-4-sass-barrio-s...
В docker-compose.yml я прописал такие конфиги для сервиса node.js:
image: wodby/node:$NODE_TAG
container_name: "${PROJECT_NAME}_node"
working_dir: /var/www/html/web/themes/custom/bootstrap_sass_bcnews
labels:
- "traefik.http.services.${PROJECT_NAME}_node.loadbalancer.server.port=3000"
- "traefik.http.routers.${PROJECT_NAME}_node.rule=Host(`node.${PROJECT_BASE_URL}`)"
expose:
- "3000"
volumes:
- ./var/www/html/web/themes/custom/bootstrap_sass_bcnews:/var/www/html
command: sh -c 'apt-get install python3-software-properties gnupg2 curl wget -y && curl -fsSL https://deb.nodesource.com/setup_12.x | sudo -E bash - && sudo apt-get install -y nodejs && cd /var/www/html/web/themes/custom/bootstrap_sass_bcnews && npm install --global gulp-cli && npm install'
Путь к Drupal проекту в моей системе: /home/perceval/Desktop/bcnews_project
Путь к теме в контейнере: /var/www/html/web/themes/custom/bootstrap_sass_bcnews
После запуска контейнеров docker-compose up -d
и проверки docker ps
, я вижу что node.js контейнер не запущен:
В файле docker-compose.yml я правил только три строчки working_dir, volumes, command. И подозреваю, что-то не так написал в последних двух.
Файл .env:
NODE_TAG=12-dev-0.84.0
В чем проблема? И вообще, правильно ли я написал команды в строке command?
P.S.:
Для удобства чтения я напишу вам команды в столбец написанные мною в command в файле docker-compose.yml:
curl -fsSL https://deb.nodesource.com/setup_12.x | sudo -E bash - &&
sudo apt-get install -y nodejs &&
cd /var/www/html/web/themes/custom/bootstrap_sass_bcnews &&
npm install --global gulp-cli &&
npm install'
Комментарии
Решение:
1. Node.js образ в docker4drupal использует `apk` вместо of `apt-get ` для установки дополнительных пакетов.
2. Этот образ уже содержит node.js. Мне не нужно писать команду установки node.js в строке `command:`.
Вот как должна выглядеть конфигурация сервиса node.js в моем случае:
image: wodby/node:$NODE_TAG
container_name: "${PROJECT_NAME}_node"
working_dir: /var/www/html/web/themes/custom/bcnews_bootstrap_sass
labels:
- "traefik.http.services.${PROJECT_NAME}_node.loadbalancer.server.port=3000"
- "traefik.http.routers.${PROJECT_NAME}_node.rule=Host(`node.${PROJECT_BASE_URL}`)"
expose:
- "3000"
volumes:
- ./:/var/www/html:cached
command: sh -c 'cd /var/www/html/web/themes/custom/bcnews_bootstrap_sass && npm init --yes && npm install --global gulp-cli && npm install --save-dev gulp && npm install && gulp'