Простой локальный сервер на Docker | Wiki | PWODEV
, 09.10.2020 08:42

Простой локальный сервер на Docker


Итак, перед нами стала задача развернуть локальный сервер. Забегу в перед, мы будем настраивать простой локальный сервер на Docker. Сейчас будет немного лирики. Если хотите перейти сразу к настройке, нажмите Ctrl+D чтобы добавить эту статью в закладки браузера и прокрутите чуть ниже.

Есть вариант использовать постоянный, дефолтный, нативный локальный сервер, то-есть средствами системы. Если это локальный сервер на MacOS или Linux, то там уже почти все настроено, и можно использовать почти из коробки. Локальный сервер на Windows немного сложнее в установке, но тоже возможно.

Во всех этих способах необходимо выбрать определенную папку localhost в которой будут лежать файлы отображаемые на сервере. С одной стороны удобно, с другой, у нас же есть специальная рабочая папка, которую мы создали в удобном нам месте, распределенной по заказчикам и проектам. В ней лежит не только исходный код проекта но и документация по проекту, какие-то вспомогательные файлы от заказчика и тд. Не удобно дробить проект по разным папкам. Часть проекта в одной папке, в которой мы положили все что нам надо, но исходный код в совершенно другой, там где удобно локальному серверу. Мы хотим чтобы все данные по проекту лежали в одной папке.

Для решения этой задачи, добрые люди придумали локальный сервер на Docker.

Лирика закончилась переходим к действию.

Локальный сервер на Docker настройка:

Для начала создаем папку в любом месте где нам удобно. В этой папке создаем следующую структуру:

  • www — папка в которой лежат исходники
  • docker-compose.yml — файл в котором лежат основные настройки Docker
  • Dockerfile — для настроек PHP в Docker
  • Dockerfile-nginx — для настроек Nginx в Docker
  • nginx-web.template — конфигурация Nginx

Структура готова перейдем к содержимому файлов.

Надеюсь у вас уже установлен докер 🙂 Если нет, то пора установить.

Простая конфигурация docker-compose.yml

version: '3'

services:
  nginx:
    build:
      context: .
      dockerfile: Dockerfile-nginx
    environment:
      - VIRTUAL_HOST=test.local
      - PHP_HOST=php
      - DOLLAR=$$
    volumes:
      - ./www:/var/www/html
    links:
      - db
    depends_on:
      - php
  php:
    build: .
    volumes:
      - ./www:/var/www/html
  db:
    image: mariadb
    restart: always
    volumes:
      - ./_mysql_:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_DATABASE: table
    ports:
      - "8888:3306"
networks:
  default:
    external:
      name: frontproxy_default

Содержимое Dockerfile

FROM php:7.4-fpm

Содержимое Dockerfile-nginx

FROM nginx:latest
COPY nginx-web.template /etc/nginx/conf.d/nginx-web.template
ENTRYPOINT ["/bin/bash", "-c", "envsubst < /etc/nginx/conf.d/nginx-web.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"]

Простая настройка nginx-web.template

server {
    server_name ${VIRTUAL_HOST};
    root /var/www/html;
    index index.php;

    location / {
        try_files ${DOLLAR}uri ${DOLLAR}uri/ /index.php${DOLLAR}is_args${DOLLAR}args;
    }
    location ~ \.php$ {
        fastcgi_pass ${PHP_HOST}:9000;
        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME ${DOLLAR}realpath_root${DOLLAR}fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT ${DOLLAR}realpath_root;
    }
}

Теперь надо добавить наш домен test.local в файл /etc/hosts

127.0.0.1 test.local

Все готово. Теперь можно запускать сервер.

Запускаем локальный сервер на Docker

Как запустить докер? Вот вам статья как пользоваться докером.

В командной строке пишем следующее:

docker-compose build && docker-compose up -d

Как перезапустить или пересобрать докер

docker-compose down && docker-compose build && docker-compose up -d

Чтобы остановить Docker контейнер

docker-compose down

Готово все 🙂 Теперь можно запустить браузер http://test.local и радоваться результатом.

Важно знать что переодически надо чистить докер от мусора, где-то раз в год, если часто пересобираем контейнеры. Вот статья на тему как почистить докер от мусора.

Сегодня мы настроили ЛАМП LNMP LAMP Server. Который работает с той папки. с которой хотим, и этих серверов можно запускать сколько хочешь.

А теперь добавь эту статью в закладки и поделись с колегами:


Добавить комментарий