Создание рабочего окружения разработки с помощью Docker

Создание рабочего окружения разработки с помощью Docker

Создание рабочего окружения разработки с помощью Docker

Доброго времени суток! В данной статье и следующих я расскажу и покажу, как настроить окружение
разработки c помощью Docker
в котором можно будет создавать PHP и JavaScript проекты.
О том, что такое Docker и зачем он нужен я уже рассказывал здесь.
Фактически в рамках данной статьи мы рассмотрим как создать и настроить связку Nginx+PHP(PHP-FPM)+NodeJS+MySQL с помощью Docker-a.
Все зависимости мы будем прописывать в конфигурационных файлах, так, что каждый у кого есть установленные Docker и Docker Compose,
хоть на Linux, хоть на Windows, сможет запустить проекта буквально одной командой.

Установка Docker на Windows ничем не отличается от установки большинства программ, а для Linux есть подробные инструкции,
которые просто необходимо последовательно выполнить.

Итак, рассмотрим файловую структуру проекта.



.

├── bin

│   └── dapp

├── docker

│   ├── mysql

│   │   ├── conf.d

│   │   ├── init

│   │   └── lib

│   ├── nginx

│   │   ├── cert_data

│   │   ├── common

│   │   │   └── cors.conf

│   │   ├── conf.d

│   │   │   ├── api.dapp.local.conf

│   │   │   └── dapp.local.conf

│   │   ├── generated_certs

│   │   ├── logs

│   │   │   ├── access.log

│   │   │   ├── dapp.access.log

│   │   │   ├── dapp_api.access.log

│   │   │   ├── dapp_api.error.log

│   │   │   ├── dapp.error.log

│   │   │   └── error.log

│   │   ├── ssl

│   │   │   ├── certs

│   │   │   └── private

│   │   ├── Dockerfile

│   │   ├── generate-ssl-2.sh

│   │   ├── nginx.conf

│   │   └── openssl.cnf

│   └── php

│       ├── conf.d

│       │   ├── error_reporting.ini

│       │   └── xdebug.ini

│       ├── Dockerfile

│       └── local.ini

├── src

├── docker-compose.yml

└── update_hosts.sh





Теперь рассмотрим подробнее часть основных файлов и папок проекта.

bin/dapp

Основной скрипт, которые отвечает за запуск и остановку контейнеров. Также с помощью данной скрипта можно войти
в контейнер и работать с файлами в нем, как с обычными файлами. Все изменения сделанные в контейнере будут отображаться
на файлы проекта в папке src/#название проекта#. Далее содержимое этого файла:



#!/usr/bin/env bash



set -e



COMMAND_UP="docker compose up -d"

COMMAND_STOP="docker compose stop"

COMMAND_PS="docker ps"

COMMAND_APP="docker exec -it -u dapp:dapp dapp-php /bin/bash"

COMMAND_APP_AS_ROOT="docker exec -it dapp-php /bin/bash"

COMMAND_APP_EXEC="docker exec -u dapp:dapp dapp-php ${2}"

COMMAND_SERVER="docker exec -it dapp-nginx /bin/bash"

COMMAND_DB="docker exec -it dapp-mysql /bin/bash"

COMMAND_LOGS="docker logs dapp-$2 $3"

COMMAND_RESTART="docker compose restart"

COMMAND_HELP="echo DApp available commands: up, stop, restart, ps, app, app:root, exec, server, db, logs"



cli_command="$1"



case "$cli_command" in



  up|UP ) $COMMAND_UP;;



  stop|STOP ) $COMMAND_STOP;;



  ps|PS ) $COMMAND_PS;;



  app|APP ) $COMMAND_APP;;



  db|DB ) $COMMAND_DB;;



  logs ) $COMMAND_LOGS;;



  server ) $COMMAND_SERVER;;



  restart ) $COMMAND_RESTART;;



  exec ) $COMMAND_APP_EXEC;;



  app:root ) $COMMAND_APP_AS_ROOT;;



  * ) $COMMAND_HELP;;

esac





Работаем с этим файлом следующим образом:



$ bin/dapp up # запускает наши контейнеры (nginx, php, mysql)



$ bin/dapp stop # останавливает контейнеры



$ bin/dapp app # открывает командную строку в контейнере с PHP, рабочей папкой является папка src из хостовой файловой системы

update_hosts.sh



#!/usr/bin/env bash



HOST_BASE="dapp.local"





set -e





function create_hosts_entries {



    hub_template="$1"



    {

      printf "n"

      printf "# =========== DApp Dev Domains ======================= #"

      printf "n"

      printf "127.0.0.1t %sn" "$HOST_BASE"

      printf "127.0.0.1t %s.%sn" "$hub_template" "$HOST_BASE"

      printf "# =========== added by scripts/update_hosts.sh ========== #"

      printf "n"



    } >> /etc/hosts



    printf "/etc/hosts with %s hub updated!n" "$1"

}





create_hosts_entries "api"





Скрипт выше предназначен для автоматического обновления файла /etc/hosts (это для Linux, для Windows файл C:WindowsSystem32driversetchosts
нужно отредактировать вручную), чтобы к локальному сайту можно было обращаться в браузере по имени хоста, в нашем случае dapp.local.

Таким образом в данной статье мы начали рассматривать с Вами, как с помощью Docker можно настроить локальную среду разработки Nginx+PHP+MySQL,
в следующих статьях посмотрим как собрать в Docker нужный именно нам образ PHP и опишем конфигурацию проекта с помощью docker-compose.yml.

Источник

НЕТ КОММЕНТАРИЕВ

Оставить комментарий