/bxdocker

Primary LanguageHTMLMIT LicenseMIT

Bxdocker

  • Bxdocker позволяет легко и просто запускать Bitrix CMS в Docker.
  • Bxdocker облегчает разработку на Битрикс предоставляя готовые сервисы PHP, NGINX, MySQL, phpMyAdmin и многие другие.
  • Сервис PHP запакован в отдельный образ, чтобы избавить разработчиков от долгого компилирования.
  • Остальные сервисы так же "причёсаны" и разворачиваются моментально.
  • Ничего лишнего.

Порядок разработки в Windows

Если вы работаете в Windows, то требуется установить виртуальную машину. Желательно использовать Virtualbox, сделать сеть "Сетевой мост", поставить Ubuntu Server. Сетевой мост даст возможность обращаться к машине по IP и не делать лишних пробросов портов. Ваш рабочий проект должен хранится в двух местах, первое - локальная папка с проектами на хосте (открывается в IDE), второе - виртуальная машина (например /var/www/bitrix). Проект на хосте мапится в IDE к гостевой OC.

Зависимости

Git

apt-get install -y git

Docker & Docker-Compose

cd /usr/local/src && wget -qO- https://get.docker.com/ | sh
# Заменить 1.18.0 на текущую версию https://github.com/docker/compose/releases
curl -L "https://github.com/docker/compose/releases/download/1.18.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \
chmod +x /usr/local/bin/docker-compose

Начало работы

Склонируйте репозиторий bxdocker.

git clone https://github.com/creio/bxdocker.git
cd bxdocker

Выполните настройку окружения.

Скопируйте файл .env_template в .env

cp -f .env_template .env
  • Если у вас мак или windows, то удалите строчку /etc/localtime:/etc/localtime/:ro из docker-compose
  • По умолчнию используется nginx php7, эти настройки можно изменить в файле .env. Также можно задать путь к каталогу с сайтом и параметры базы данных MySQL.
  • Если восстанавливаем сайт в старой кодировке, исправить в php конфигах. mbstring.internal_encoding=ISO-8859-1 или mbstring.func_overload=0.

В настройках подключения требуется указывать имя сервиса, например для подключения к mysql нужно указывать db, а не localhost. Пример конфига с подклчюением к mysql и memcached.

PHP_VERSION=php7           # Версия php 
WEB_SERVER_TYPE=nginx      # Веб-сервер nginx/apache
MYSQL_DATABASE=bitrix      # Имя базы данных
MYSQL_USER=bitrix          # Пользователь базы данных
MYSQL_PASSWORD=123         # Пароль для доступа к базе данных
MYSQL_ROOT_PASSWORD=123    # Пароль для пользователя root от базы данных
INTERFACE=0.0.0.0          # На данный интерфейс будут проксироваться порты `ip a`
SITE_PATH=./www/site       # !!!относительный путь к директории Вашего сайта

Запустите docker.service

sudo systemctl start docker
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl stop docker
sudo systemctl status docker

Команды compose.

docker-compose -h
docker-compose up -d                    # -d В режиме демона
docker-compose up -d --build
docker-compose up -d --force-recreate
docker-compose ps                       # Процессы
docker-compose stop                     # Остановка
docker-compose down                     # Остановка контейнеров
docker-compose down --volumes           # Остановка и удаление контейнеров и сети
docker-compose exec web_server bash     # Подключение к контейнеру web_server(консоль)
  • Чтобы проверить, что все сервисы запустились посмотрите список процессов docker ps.
  • Посмотрите все прослушиваемые порты, должны быть 80, 11211, 9000 ss -tulpn.
  • Откройте IP машины в браузере.
  • Сайт будет доступен по адресу localhost ip a, если не указали INTERFACE. Чтобы сайт открывался по доменному имени, например, loc.dev, добавляем запись в файл /etc/hosts. https://wiki.archlinux.org/index.php/Network_configuration_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
127.0.0.1       loc.dev

Команды docker.

docker ps -a                   # Lists containers (and tells you which images they are spun from)

docker rm container_id         # Removes a container
docker rm $(docker ps --filter status=exited -q) # del stopped containers
docker rm $(docker ps -a -q)   # delete all stopped containers with
docker kill $(docker ps -q)    # kill all running containers with

docker images                  # Lists images
docker image prune -a -f          # del all unused images

docker rmi image_id            # Removes an image
docker rmi -f image_id         # Forces removal
docker rmi $(docker images -q) # delete all images with

docker network ls              # list network
docker network prune -f        # del all unused network

Примечание

  • Если вы хотите начать с чистой установки Битрикса, скачайте файл bitrixsetup.php в папку с сайтом. По умолчанию стоит директория /var/www/bitrix/.
  • Для загрузки резервной копии в контейнер используйте команду: cat /var/www/bitrix/backup.sql | docker exec -i mysql /usr/bin/mysql -u root -p123 bitrix
  • phpMyAdmin на порту :8080.
  • /var/www/html/ на порту :88. Статичные файлы с ./www/html.

Полезные скрипты

bitrixsetup.php
restore.php
bitrix_server_test.php

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