leadsdoit/lara-php
Images for Laravel with PostgreSQL
235
Данный образ основан на образе php:${PHP_VER}-fpm
для работы с laravel framework.
Опубликовано на Docker Hub
version: '3.8'
services:
php-dev:
image: leadsdoit/lara-php:8.3-dev
extra_hosts:
- 'host.docker.internal:host-gateway'
container_name: docker_php_dev
restart: always
volumes:
- ./:/app
# - "./script/php/php.ini:/usr/local/etc/php/conf.d/88-conf.ini:ro"
# - "./script/php/xdebug.ini:/usr/local/etc/php/conf.d/99-xdebug.ini:ro"
environment:
PHP_IDE_CONFIG: "serverName=docker_php_dev"
IGNITION_LOCAL_SITES_PATH: '${PWD}'
CONTAINER_ROLE: "app"
LARAVEL_SAIL: 1
# XDEBUG_MODE: "off"
ports:
- "127.0.0.1:9002:9000"
alias sail='sh $([ -f sail ] && echo sail || echo vendor/bin/sail)'
sail up -d --build
sail composer install
Dockerfile
FROM leadsdoit/lara-php:8.3
WORKDIR /app
COPY . .
RUN [ -d /app/vendor ] && rm -r /app/vendor || echo "Directory /app/vendor does not exist"
RUN rm -r /app/docker
RUN chown -R www-data:www-data /app \
&& chmod -R 755 /app/storage
RUN composer install --optimize-autoloader --no-dev
docker-compose.yml
version: '3.8'
x-common-app-settings: &common-app-settings
image: leadsdoit/lara-php:8.3
restart: always
working_dir: /app
networks:
- lara-network
services:
app_php:
<<: *common-app-settings
container_name: lara_app_php
environment:
CONTAINER_ROLE: "app"
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
app_queue:
<<: *common-app-settings
container_name: lara_app_queue
environment:
CONTAINER_ROLE: "queue"
depends_on:
- app_php
app_cron:
<<: *common-app-settings
container_name: lara_app_cron
environment:
CONTAINER_ROLE: "cron"
depends_on:
- app_php
В образе установлен composer
В также следующие расширения:
В образе присутствует скрипт install-php-extensions и если необходимо установить еще какие-то расширения добавьте в Dockerfile вызов скрипта install-php-extensions
FROM leadsdoit/lara-php:8.3-dev as phpdev
RUN install-php-extensions \
mysqli \
pdo_mysql
RUN install-php-extensions <нужные расширения через пробел>
Образ умеет работать в следующих ролях
Для выбора роли передаем ее в переменную CONTAINER_ROLE
.
По умолчанию роль app
Роль queue
может получать следующие настройки:
Если необходимо настроить под себя, образ содержит следующие конфигурации, которые можно подменить
/usr/local/etc/php/conf.d/00-conf.ini
/usr/local/etc/php/conf.d/01-xdebug.ini
/etc/cron.d/app_cron
/usr/local/bin/entrypoint
В образе с суффиксом -dev
установлен X-Debug.
Он сконфигурирован минимальными настройками:
/usr/local/etc/php/conf.d/01-xdebug.ini
Управлять режимами можно при помощи переменных
on
, при необходимости можно выключить, передайте off
1
, для отключения передайте 0
Более подробно прочитать можно тут
В образ добавлен пользователь sail
Для корректного режима sail необходимо в файле .env
добавить переменную
APP_SERVICE=<имя контейнера>
Данный скрипт доступен только в версии DEV
Если через docker
docker exec -it <имя контейнера> dev-app
Если создано через docker compose
docker compose exec <имя сервиса> dev-app
При запуске скрипта будет вызвано меню
Выберите категорию:
1. node
2. lara
3. Выход
Данная категория позволяет установить node.js нужной версии. Внутри контейнера ставится NVM, а далее через него устанавливается нужная версия и делается по умолчанию.
Можно сразу вызвать установку 22-й версии
docker compose exec <имя сервиса> dev-app node install 22
После установки Node.js он доступен для внешнего вызова
docker compose exec <имя сервиса> node -v
Внимание: node.js ставится в текущий контейнер, и при пересоздании контейнера, команду надо выполнять по новой. Если надо чтоб он был всегда, создайте Dockerfile и добавьте туда выполнение этого скрипта.
FROM leadsdoit/lara-php:8.3-dev RUN dev-app node install 22
Если вы используете sail команды с node будут доступны и через него
sail node -v
sail npm run dev
Данная категория позволяет развернуть внутри контейнера новое приложение laravel
Создаем в папке проекта минимальную конфигурацию docker-compose.yml
services:
app_php:
image: leadsdoit/lara-php:dev
restart: always
volumes:
- ./:/app
environment:
CONTAINER_ROLE: "app"
Выполняем команду:
docker compose exec <имя сервиса> dev-app lara install
После этого внутри контейнера во временной папке создастся новое приложение,
вы отвечаете на вопросы инициализации нового приложения Laravel,
после чего все файлы будут перенесены в рабочую директорию /app
Если вы используете Linux или Mac или Windows WSL, после копирования, вам необходимо весь проект передать своему пользователю
sudo chown -R <ваш пользователь>:<ваш пользователь> .
Внимание: Установка не сработает если уже есть проект
docker pull leadsdoit/lara-php