Как создать docker-окружение с nginx + php 7.4 + composer?

Пользователь

от rachel , в категории: Другие , год назад

Как создать docker-окружение с nginx + php 7.4 + composer?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от clement.erdman , год назад

@rachel 

Если вы хотите создать Docker-окружение с Nginx, PHP 7.4 и Composer, вам понадобится создать Dockerfile и docker-compose.yml файлы.


Вот примеры файлов, которые вы можете использовать в своем проекте:


Dockerfile:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Используем официальный образ PHP 7.4 FPM
FROM php:7.4-fpm

# Устанавливаем зависимости для Nginx
RUN apt-get update     && apt-get install -y nginx

# Устанавливаем Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Копируем конфигурацию Nginx в образ
COPY nginx.conf /etc/nginx/nginx.conf

# Настраиваем рабочую директорию
WORKDIR /var/www

# Копируем и устанавливаем зависимости Composer
COPY composer.json composer.lock ./
RUN composer install --no-scripts --no-autoloader

# Копируем и устанавливаем файлы приложения
COPY . .

# Переключаемся на пользователя www-data
USER www-data

# Запускаем PHP-FPM и Nginx
CMD php-fpm && nginx -g "daemon off;"


docker-compose.yml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/var/www
    ports:
      - 8080:80
    depends_on:
      - db
  db:
    image: mysql:latest
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydb
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword


В этом примере мы также создали сервис для базы данных MySQL. Вы можете настроить его согласно вашим потребностям.


Поместите эти файлы в корневую папку вашего проекта и выполните следующую команду для запуска Docker-окружения:

1
docker-compose up


После успешного выполнения этой команды, ваше Docker-окружение будет запущено с Nginx, PHP 7.4 и Composer. Вы сможете открыть ваше приложение в браузере по адресу http://localhost:8080.

Пользователь

от evalyn.barrows , 5 месяцев назад

@rachel 

Убедитесь, что у вас установлен Docker и Docker Compose перед запуском кода выше. Создайте файлы Dockerfile, composer.json и nginx.conf в своей рабочей директории. В composer.json укажите зависимости для вашего PHP проекта. Настройте файл nginx.conf с конфигурацией для Nginx сервера.

  1. Создайте файл Dockerfile и добавьте в него следующий код:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Используем официальный образ PHP 7.4 FPM
FROM php:7.4-fpm

# Устанавливаем зависимости для Nginx
RUN apt-get update     && apt-get install -y nginx

# Устанавливаем Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Копируем конфигурацию Nginx в образ
COPY nginx.conf /etc/nginx/nginx.conf

# Настраиваем рабочую директорию
WORKDIR /var/www

# Копируем и устанавливаем зависимости Composer
COPY composer.json ./
RUN composer install --no-scripts --no-autoloader

# Копируем и устанавливаем файлы приложения
COPY . .

# Переключаемся на пользователя www-data
USER www-data

# Запускаем PHP-FPM и Nginx
CMD php-fpm && nginx -g "daemon off;"


  1. Создайте файл composer.json с вашими зависимостями PHP проекта.
  2. Создайте файл nginx.conf с конфигурацией Nginx сервера, например:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
    listen 80;
    server_name localhost;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

    root /var/www/public;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ .php$ {
        include fastcgi_params;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
}


  1. Создайте файл docker-compose.yml и добавьте в него следующий код:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/var/www
    ports:
      - 8080:80
    depends_on:
      - php
  php:
    image: php:7.4-fpm
    volumes:
      - .:/var/www
  nginx:
    image: nginx:latest
    ports:
      - 8081:80
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - php


  1. Запустите Docker-окружение с помощью команды:
1
docker-compose up


После этого ваше Docker-окружение с Nginx, PHP 7.4 и Composer будет запущено, и вы сможете открыть ваше приложение в браузере по адресу http://localhost:8080. Помните, что порт Nginx можно будет изменить с 8081 на другой в файле docker-compose.yml.