Вот как пример docker-compose.yaml в корень проекта с ларой.
version: '2'
services:
app:
build:
context: ./docker/services/app
dockerfile: ./Dockerfile
working_dir: /var/www
volumes:
- ./:/var/www
env_file: ./.env
depends_on:
- mysql
restart: always
routine:
build:
context: ./docker/services/routine
dockerfile: ./Dockerfile
working_dir: /var/www
volumes_from:
- app
env_file: ./.env
depends_on:
- app
restart: always
web:
build:
context: ./docker/services/web
dockerfile: ./Dockerfile
working_dir: /var/www
ports:
- 80:80
- 443:443
restart: always
volumes_from:
- app
mysql:
image: mysql:5.7
volumes:
- mysql-db:/var/lib/mysql
environment:
- "MYSQL_ROOT_PASSWORD=rootpass"
- "MYSQL_DATABASE=db"
- "MYSQL_USER=user"
- "MYSQL_PASSWORD=pass"
restart: always
ports:
- 3306:3306
volumes:
mysql-db:
driver: local
Дальше нужно создать папки в docker/services и там папки с Dockerfile и конфигом.
Как пример app в нем композер и нода для билда (это не тру подход, но можно юзать. Нужно все в отдельные контейнеры):
FROM php:7.1-fpm
RUN apt-get update \
&& apt-get install -y \
git gnupg ssh cron nano supervisor \
libmcrypt-dev libfreetype6-dev libjpeg62-turbo-dev libpq-dev \
libjpeg-dev libpng-dev zlib1g-dev libmagickwand-dev --no-install-recommends \
&& pecl install imagick \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-enable imagick \
&& docker-php-ext-install gd mcrypt mbstring pdo pdo_mysql pdo_pgsql zip bcmath
RUN cd ~ \
&& curl -sL https://deb.nodesource.com/setup_10.x | bash - \
&& apt-get install -y nodejs \
&& apt-get install -y build-essential
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
mysql:
FROM mysql
И другие контейнеры web там конфиг nginx, routine там имидж от app для выполнения тасков из очереди.