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;