Как собрать vue-проект в docker-compoce
Структура проекта:
-- project
----> configs // Конфиги сборки докера
------> application
-------- Dockerfile
-------- php-fpm.conf
------> nginx
-------- Dockerfile
-------- php-fpm.conf
------> nodejs
-------- Dockerfile
-- databases // Базы дынных
-- production // Код проетка (PHP + VUE)
-- .env
-- .env.example
-- docker-compose.yml
-- README.md
dockerfile сервиса nodejs:
FROM node:lts-alpine as front
WORKDIR /var/www/project/production/frontend
VOLUME ["/var/www/project/production/frontend"]
RUN apk add --no-cache bash
RUN npm install -g @vue/cli
RUN npm install
RUN npm run build
Сервис:
# NODEJS - Service
nodejs:
build: configs/nodejs
container_name: nodejs_container
depends_on:
- application
Почему при выполнении docker-compose build в контейнер не примонтировалась директория /var/www/project/production/frontend(вывод команды ls -la)?
Соответственно не собирается проект из-за отстутствия файла package.json.
Ответы (1 шт):
Автор решения: Не быть рабом на Руси
→ Ссылка
Чтобы Docker примонтировал(binding) дирикторию необходимо при запуске контейнера передать путь к директории на хосте(локальная машина), которую будем монтировать и путь где будет эта директория в контейнере. Пример: -v
/var/www/my-site:/var/www/my-siteили --volume/var/www/my-site:/var/www/my-site;Дополняем image
node:lts-alpine:
FROM node:lts-alpine
RUN npm install -g @vue/cli
- Описываем сервис в
docker-compose.yml:
version: '3'
services:
# NODEJS - Service
nodejs:
build: configs/nodejs
container_name: nodejs_container
volumes:
- /var/www/my-site:/var/www/my-site
working_dir: /var/www/my-site
command: sh init.sh
- Когда поднимим контаинер выполнится скрипт:
npm install
npm run build