У меня есть мультиконтейнерное приложение (Laravel + Nginx + PostgreSQL), и я использую docker compose для сборки моего приложения.
Мне нужно запустить php artisan migrate
внутри моего контейнера Laravel в процессе сборки, но у меня естьпроблема - контейнер Laravel может начать сборку раньше, чем контейнер Postgres, поэтому я получил ошибку, потому что мой хост БД не готов.Как я могу установить что-то вроде "последовательность построения" в моем docker-compose.yml
?
Мой текущий docker-compose.yml
:
version: '3.3'
services:
phpfpm:
build:
context: laravel-docker
depends_on:
- db
container_name: phpfpm
restart: always
volumes:
- /var/www/html/vendor/
- ./laravel-docker:/var/www/html
networks:
- app-network
db:
image: postgres:9.6.5-alpine
container_name: db
restart: always
environment:
POSTGRES_DB: blabla
POSTGRES_USER: blabla
POSTGRES_PASSWORD: blabla
volumes:
- ./db_data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- app-network
и laravel-docker/Dockerfile
:
FROM php:7.3.0-fpm-alpine3.8
//...
RUN chown -R www-data:www-data /var/www/html
RUN chmod 755 -R /var/www/html && chmod -R o+w storage/
USER www-data
RUN composer install
RUN composer dump-autoload
COPY .env.example .env
// I need to migrate here when DB container will be ready