SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы

Список вопросов Печать

Особенности развёртывания Laravel в docker связке nginx+php-fpm


Метки: laravel php php-fpm nginx docker docker-compose docker-compose.yml mysql 

Ответы

RemiZOffAlex  Создано: 2020-10-15 17:09:05.364838  Обновлено: 2020-10-15 17:09:05.364838

Т.к. php интерпретатор работает в основном только с файлами с суффиксом (расширением) .php, то остальные файлы отдаются как статические.

Nginx

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass app:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
}

Два контейнера nginx и php-fpm, в оба монтируем внешний том /home/username/backend

rm -rf /home/username/backend-$CI_COMMIT_SHORT_SHA/storage
ln -s /home/username/backend-$CI_COMMIT_SHORT_SHA /home/username/backend
ln -s /home/username/storage/app/public /home/username/backend-$CI_COMMIT_SHORT_SHA/public/storage
rm -rf /home/username/backend
ln -s /home/username/backend-$CI_COMMIT_SHORT_SHA /home/username/backend

docker-compose.yml

version: "3.8"
services:
  nginx:
    image: nginx:stable
    container_name: nginx
    restart: unless-stopped
    ports:
      - 80:80
      - 443:443
    links:
      - app
    volumes:
      - ./backend:/var/www
- ./storage:/var/www/storage
- ./storage:/var/www/public/storage
- ./nginx/proxy_params:/etc/nginx/proxy_params
- ./nginx/conf.d:/etc/nginx/conf.d - ./logs:/var/log/nginx - ./certs:/etc/nginx/certs - ./acme-challenge:/var/www/letsencrypt app: image: app:latest container_name: app restart: unless-stopped links: - db volumes: - ./backend:/var/www
- ./storage:/var/www/storage
- ./storage:/var/www/public/storage - ./.env:/var/www/.env db: image: mysql:5.7 container_name: db restart: unless-stopped environment: MYSQL_DATABASE: ${DB_DATABASE} MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} MYSQL_PASSWORD: ${DB_PASSWORD} MYSQL_USER: ${DB_USERNAME} SERVICE_TAGS: dev SERVICE_NAME: mysql volumes: - ./db:/var/lib/mysql

Возможно будут интересны и другие вопросы