Laravel - два способа поставить в Docker: руками или через Sail
26 февраля 2024

Вручную
Использовать bitnami сборку
mkdir ~/myapp && cd ~/myapp docker run --name laravel -v ${PWD}/my-project:/app bitnami/laravel:latest
Это создаст в директории myapp проект my-project
Далее, для запуска проекта создадим docker-compose.yml
Далее, для запуска проекта создадим docker-compose.yml
# docker-compose.yml version: '3' networks: laravel: services: laravel: image: bitnami/laravel:latest restart: unless-stopped ports: - 8000:8000 volumes: - ./my-project:/app networks: - laravel mysql: image: mariadb:11.3 restart: unless-stopped tty: true volumes: - ./my-data:/var/lib/mysql environment: MYSQL_DATABASE: homestead MYSQL_USER: homestead MYSQL_PASSWORD: secret MYSQL_ROOT_PASSWORD: secret SERVICE_TAGS: dev SERVICE_NAME: mysql networks: - laravel redis: image: redis:alpine restart: unless-stopped networks: - laravel
И подправим my-project/.env
APP_NAME=Laravel APP_ENV=dev APP_DEBUG=true APP_URL=http://localhost:8000 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret
Я не стал прокидывать порты для redis и mysql, это всегда можно сделать при необходимости. Да и зачем, если можно подключиться к контейнеру по его IP.
Sail
Mysql 8.0.4 отказался перезапускаться, сообщая, что что-то не так с файлами базы и был заменен на MariaDB.
curl -s "https://laravel.build/example-app?with=mariadb,redis&devcontainer" | bash
Это сделает все, включая создание docker compose.
У меня есть локальный mysql и redis, поэтому в example-app/.env добавил
У меня есть локальный mysql и redis, поэтому в example-app/.env добавил
FORWARD_REDIS_PORT=6380 FORWARD_DB_PORT=3307
Старт проекта осуществляется через
./vendor/bin/sail up
Если надо создать базу и пользователя
docker compose exec mariadb bash CREATE DATABASE laravel; CREATE USER 'sail'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'sail'@'%' WITH GRANT OPTION;