PankovAlxndr
@PankovAlxndr
Fullstack web developer

Когда где и как накатывать миграции laravel при использовании Docker?

Здравствуйте.
Пдскажиет как правильно разворачивать проект ларавел на проде через докер, сейчас конкретно хочу узнать на счет миграций, где как и когда?
вот мой compose для прода
все image это локальные пока что сброки, которые я с сбилдил, там код и все зависимости приложения
version: "3.9"
services:
  nginx:
    container_name: wb_nginx
    image: "wb-stage-nginx:develop-1"
    ports:
      - "8080:80"
    depends_on:
      - mysql
      - api-php-fpm

  api-php-cli:
    container_name: wb_php_cli
    image: "wb-stage-php-cli:develop-1"
    environment:
      APP_ENV: production
      APP_DEBUG: false
      DB_HOST: ${DB_HOST}
      DB_PORT: ${DB_PORT}
      DB_DATABASE: ${DB_DATABASE}
      DB_USERNAME: ${DB_USERNAME}
      DB_PASSWORD: ${DB_PASSWORD}
    depends_on:
      - mysql

  pi-php-fpm:
    container_name: wb_php_fpm
    image: "wb-stage-php-fpm:develop-1"
    environment:
      APP_ENV: production
      APP_DEBUG: false
      DB_HOST: ${DB_HOST}
      DB_PORT: ${DB_PORT}
      DB_DATABASE: ${DB_DATABASE}
      DB_USERNAME: ${DB_USERNAME}
      DB_PASSWORD: ${DB_PASSWORD}
    depends_on:
      - mysql

  mysql:
    container_name: wb_mysql
    image: "mysql/mysql-server:8.0"
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_USER: ${DB_DATABASE}
      MYSQL_PASSWORD: ${DB_PASSWORD}
    volumes:
      - mysql8stage:/var/lib/mysql

volumes:
  mysql8stage:
    name: wb_mysql
    driver: local

а на прод буду доставлять примерно так
deploy:
	ssh ${HOST} -p ${PORT} 'rm -rf site_${BUILD_NUMBER}'
	ssh ${HOST} -p ${PORT} 'mkdir site_${BUILD_NUMBER}'
	scp -P ${PORT} docker-compose-stage.yml ${HOST}:site_${BUILD_NUMBER}/docker-compose.yml
	ssh ${HOST} -p ${PORT} 'cd site_${BUILD_NUMBER} && echo "REGISTRY=${REGISTRY}" >> .env'
	ssh ${HOST} -p ${PORT} 'cd site_${BUILD_NUMBER} && echo "IMAGE_TAG=${IMAGE_TAG}" >> .env'
	ssh ${HOST} -p ${PORT} 'cd site_${BUILD_NUMBER} && docker-compose pull'
	ssh ${HOST} -p ${PORT} 'cd site_${BUILD_NUMBER} && docker-compose up --build --remove-orphans -d'
	ssh ${HOST} -p ${PORT} 'rm -f site'
	ssh ${HOST} -p ${PORT} 'ln -sr site_${BUILD_NUMBER} site'

где мне по уму накатывать миграции, во время деплоя, после docker-compose up --build --remove-orphans -d, подключаться с php_cli и там производить artisan migrate, те почти руками через makefile алиас или все же куда-то можно это "зашить" и чтобы само запускалось? или ENTRYPOINT какой-нибудь с кастомным скрпитом запуска?
  • Вопрос задан
  • 238 просмотров
Пригласить эксперта
Ответы на вопрос 1
akelsey
@akelsey
Не указана CI/CD тула, но вижу вроде как yaml, значит либо gitlab ci, либо github actions
Зачем подключаться по ssh, если разумно использовать раннер запущенный рядом в докере с docker executor с прокинутым сокетом с хоста.
Тогда можно работать напрямую - монтируете волюмы в раннер образ, копируете туда ваш docker-compose - делаете что хотите прямо на сервере. Там уже от фантазии зависит реализация.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы