Простой локальный сервер на 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. Который работает с той папки. с которой хотим, и этих серверов можно запускать сколько хочешь.
А теперь добавь эту статью в закладки и поделись с колегами:
Читайте также:
- Добавляем домен в mailcow
- Поднимаем свой меил сервер на mailcow
- Простой локальный сервер на Docker
- Docker как почистить весь мусор