Skip to content

Миграция модуля realweb.api.task c v.6.8 на v6.9 (rabbitmq)


Параметры подключения к БД

php
<?php
array(
  'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
  'host' => defined('DOCKER_MODE') ? '172.17.0.1' : 'localhost', 
  'database' => 'database',
  'login' => defined('DOCKER_MODE') ? 'docker' : 'localhostlogin', 
  'password' => 'password',
  'options' => 2.0,
)

Инструкции для сборки docker образа

shell
FROM php:8.3-fpm

ARG USER_ID

RUN apt-get update && apt-get install -y \
        curl \
        wget \
        git \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
	    libpng-dev \
	    libonig-dev \
	    libzip-dev \
        nano \
        && docker-php-ext-install -j$(nproc) iconv mbstring mysqli pdo_mysql zip opcache \
	    && docker-php-ext-configure gd --with-freetype --with-jpeg \
        && docker-php-ext-install -j$(nproc) gd

ADD ./docker/rabbitmq/php.ini /usr/local/etc/php/conf.d/40-custom.ini
RUN mkdir /var/lib/php && mkdir /var/lib/php/sessions

EXPOSE 4000

USER $USER_ID:$USER_ID
WORKDIR /var/www/somesite

CMD ["/bin/sh", "-c", "php -f /var/www/somesite/backend/local/modules/realweb.api.task/tools/rabbitmq/index.php"]

Параметры docker образа

RabbitMq всегда крутится на 50** порту (** - зарезервированный порт площадки)

yml
version: '3.7'

services:
  rabbitmq:
    image: 127.0.0.1:5000/somehost_rabbitmq
    build:
      context: .
      dockerfile: ./docker/rabbitmq/Dockerfile
    restart: always
    ports:
      - "5072:4000"
    volumes:
      - ./backend:/var/www/somehost/backend
      - ../bitrix:/var/www/bitrix
      - ../upload:/var/www/upload
      - /var/www/.ssh/:/var/www/.ssh
      - /var/lib/php/sessions:/var/lib/php/sessions
      - tmp:/tmp

volumes:
  tmp: {}

Стадия пост деплоя в паплайне

yml
stages:
  - deploy
  - post-deploy
  - revert
  - notify

post-deploy-production:
  stage: post-deploy
  variables:
    GIT_STRATEGY: none
  when: always
  only:
    - master
  needs: ["deploy-production"]
  script:
    - |
      ssh $RW_DEPLOY_USER@$RW_DEPLOY_HOST /bin/bash -e <<EOF
        cd $RW_DEPLOY_ROOT
        php8.3 ./last_release/backend/local/modules/realweb.api.task/tools/start
      EOF

Секция проверки запуска зада при деплое

Замечание

При первом запуске данного файла еще не будет, т.к. composer install происходит позднее.

yml
.deploy-pre-start: &deploy-pre-start
  - |
    ssh $RW_DEPLOY_USER@$RW_DEPLOY_HOST /bin/bash -e <<EOF
      cd $RW_DEPLOY_ROOT
      php8.3 ./last_release/backend/local/modules/realweb.api.task/tools/pause
    EOF

Сборка и запуск образа docker

yml
.deploy-ssh-install-rabbitmq: &deploy-ssh-install-rabbitmq
  - |
    ssh $RW_DEPLOY_USER@$RW_DEPLOY_HOST /bin/bash -e <<EOF
      cd $RW_DEPLOY_ROOT
      cd last_release
      docker-compose build --build-arg USER_ID=33 rabbitmq
      docker-compose up --force-recreate -d rabbitmq
    EOF

Новые команды в деплое

yml
deploy-develop:
  stage: deploy
  resource_group: develop
  variables:
    RW_DEPLOY_USER: $RW_DEV_USER
    RW_DEPLOY_HOST: $RW_DEV_HOST
    RW_DEPLOY_ROOT: $RW_DEV_ROOT
  only:
    - develop
  when: always
  script:
    - *deploy-pre-start 
    - *deploy-start
    - *deploy-composer-install
    - *deploy-front-admin-install
    - *deploy-upload-archive
    - *deploy-ssh-install-backend
    - *deploy-ssh-install-frontend
    - *deploy-ssh-install-websocket
    - *deploy-ssh-install-rabbitmq