Skip to content

Установка и настройка

Установка Docker

bash
apt install docker.io
sudo usermod -aG docker USER

Установка docker-compose

bash
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Создаём Swarm

bash
docker swarm init

Установка локального репозитория

bash
docker service create --name registry --publish published=5000,target=5000 registry:2

Билдим образы docker

bash
docker-compose build

Отправить образ в репозиторий

bash
docker-compose push

Развертывание нового стека или обновление существующего

bash
docker stack deploy --with-registry-auth --compose-file docker-swarm.yml MY_STACK

Helper

Включить/выключить сервис при запуске

bash
systemctl enable --now docker
systemctl disable --now docker

Сборка образа и запуск контейнера

bash
docker-compose up --build -d CONTAINER_NAME

Остановка контейнера

bash
docker-compose down CONTAINER_NAME

Удаление всех данных

bash
docker system prune -a

Удаление неиспользуемых образов (Которые остается при перезапуске)

bash
docker image prune -f
docker rmi $(docker images "127.0.0.1:5000/PROJECT_NAME_*" --filter "dangling=true" -q --no-trunc) -f

Закрыть 5000 порт

bash
sudo iptables -I FORWARD 1 -d 172.17.0.2 -p tcp --dport 5000 -j DROP

Потребляемые ресуры

bash
docker ps -q | xargs  docker stats --no-stream

Просмотр полную информацию о сервисе (Ошибки при запуске)

SERVICE_ID - docker service ls

bash
docker service ps SERVICE_ID

Удаление всех сервисов и контейнеров в MY_STACK

bash
docker stack rm MY_STACK

Импорт БД в контейнер

bash
docker exec -i $(docker ps -q -f name=mysql) mysql -uUSER -pPASSWORD bitrix < dump.sql

Выполнение миграций

bash
docker exec -u www-data $(docker ps -q -f name=php-fpm.1) php /var/www/release/backend/bitrix/tools/migrate apply -f

Установка composer

bash
docker exec -u www-data $(docker ps -q -f name=php-fpm.1) composer install --working-dir=/var/www/release/backend/

Конфиг nginx на хосте

nginx
server {
   listen 80;
   listen [::]:80;
   
   server_name SERVER_NAME;
   
   location / {
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_read_timeout 1m;
      proxy_connect_timeout 1m;
      proxy_pass http://192.168.0.5:3065;
   }
   
   location ~* /(api|download|static|upload|bitrix)/ {
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_read_timeout 1m;
      proxy_connect_timeout 1m;
      proxy_pass http://192.168.0.5:8065;
   }
}

Bamboo

PROD

bash
docker image prune -f
docker rmi $(docker images "127.0.0.1:5000/PROJECT_NAME_*" --filter "dangling=true" -q --no-trunc) -f
docker-compose build
docker-compose push
docker stack deploy --with-registry-auth --compose-file docker-swarm.yml MY_STACK

DEV

bash
docker image prune -f
docker-compose build --build-arg ENV=develop node
docker-compose up -d node