├── .env.example ├── .gitignore ├── Makefile ├── README.md ├── docker-compose.yml ├── docker ├── memcached │ └── memcached.docker ├── mysql │ ├── my.cnf │ └── mysql.docker ├── nginx │ ├── default.conf │ └── nginx.docker ├── php │ ├── memcached.ini │ ├── opcache.ini │ ├── php-fpm-cli.docker │ ├── php-fpm.docker │ ├── php.ini │ └── xdebug.ini └── redis │ └── redis.docker └── www └── .gitkeep /.env.example: -------------------------------------------------------------------------------- 1 | MYSQL_DATABASE=bitrix 2 | MYSQL_USER=bitrix 3 | MYSQL_PASSWORD=secret 4 | MYSQL_ROOT_PASSWORD=secret 5 | 6 | NGINX_INTERFACE=10.100.0.21 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | www/* 3 | .env 4 | storage/ 5 | !www/.gitkeep -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | up: docker-up 2 | 3 | docker-up: 4 | docker-compose up --build -d 5 | 6 | docker-clear: 7 | docker-compose down --remove-orphans 8 | 9 | bitrix-setup: 10 | docker-compose exec php-fpm-cli wget http://www.1c-bitrix.ru/download/scripts/bitrixsetup.php -O bitrixsetup.php 11 | make perm 12 | 13 | bitrix-restore-download: 14 | docker-compose exec php-fpm-cli wget $(url) 15 | make perm 16 | 17 | bitrix-restore: bitrix-restore-download 18 | docker-compose exec php-fpm-cli wget http://www.1c-bitrix.ru/download/scripts/restore.php -O restore.php 19 | make perm 20 | 21 | composer: 22 | docker-compose exec php-fpm-cli composer install 23 | 24 | perm: 25 | sudo chgrp -R ${USER} www 26 | sudo chown -R ${USER}:${USER} www 27 | sudo chmod -R ug+rwx www 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## В сборке 2 | - PHP 7.3 (opcache, xdebug) 3 | - nginx 1.14 4 | - mysql 5.7 5 | - smtp (иммитация, перехват писем небольшим скриптом на go) 6 | - mailhog для просмотра писем 7 | 8 | Соответствует всем тестам на БУС 9 | 10 | ## Установка зависимостей 11 | - Git 12 | ``` 13 | sudo apt-get install -y git 14 | ``` 15 | - Docker 16 | ``` 17 | sudo apt-get install \ 18 | apt-transport-https \ 19 | ca-certificates \ 20 | curl \ 21 | gnupg-agent \ 22 | software-properties-common 23 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 24 | sudo apt-get update 25 | sudo apt-get install docker-ce docker-ce-cli containerd.io 26 | sudo groupadd docker 27 | sudo usermod -aG docker $USER 28 | ``` 29 | 30 | - Docker compose 31 | ``` 32 | sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 33 | sudo chmod +x /usr/local/bin/docker-compose 34 | ``` 35 | 36 | ## Начало работы 37 | - Склонируйте репозиторий bitrix-docker 38 | ``` 39 | git clone https://github.com/sidigi/bitrix-docker.git 40 | ``` 41 | 42 | - Выполните настройку окружения 43 | 44 | Скопируйте файл `.env.example` в `.env` 45 | 46 | ``` 47 | cp .env.example .env 48 | ``` 49 | 50 | - Запустите bitrix-docker 51 | ``` 52 | make up 53 | ``` 54 | 55 | или если нет поддержки Makefile: 56 | 57 | ``` 58 | docker-compose up --build -d 59 | ``` 60 | 61 | ## Установка bitrix 62 | 63 | Bitrix проект нужно расположить в папке `www` 64 | 65 | ### Установка через `bitrixsetup.php` 66 | - Скачайте `bitrixsetup.php` (файл будет скачан с официального сайта автоматически) 67 | ``` 68 | make bitrix-setup 69 | ``` 70 | 71 | - Установка будет доступна по адресу `http://10.100.0.21` 72 | > При установке `bitrix` необходимо в окне создания базы данных в графе "Сервер" 73 | `localhost` заменить на `mysql` (так как контейнер поднятый в сети имеет название `mysql`) 74 | 75 | ### Востановление через `restore.php` 76 | - Скачайте `restore.php` (файл будет скачан с официального сайта автоматически) 77 | ``` 78 | make bitrix-restore url=<ссылка для переноса> 79 | ``` 80 | 81 | - Востановление будет доступна по адресу `http://10.100.0.21/restore.php` 82 | > При востановлениии необходимо в окне создания базы данных в графе "Сервер" 83 | `localhost` заменить на `mysql` (так как контейнер поднятый в сети имеет название `mysql`) 84 | 85 | ## Использование 86 | 87 | ### Mailhog 88 | Mailhog (почтовый клиент) все письма из системы будут отображены в почтовом клиенте. Доступен по адресу http://10.100.0.1:8025/ 89 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | nginx: 5 | build: 6 | context: ./docker/nginx 7 | dockerfile: nginx.docker 8 | volumes: 9 | - ./www:/var/www/bitrix 10 | - ./storage/docker/logs/nginx/:/var/log/nginx/ 11 | ports: 12 | - "80" 13 | depends_on: 14 | - php-fpm 15 | - php-fpm-cli 16 | networks: 17 | bitrix: 18 | ipv4_address: ${NGINX_INTERFACE} 19 | 20 | memcached: 21 | build: 22 | context: ./docker/memcached 23 | dockerfile: memcached.docker 24 | volumes: 25 | - ./storage/docker/memcached:/var/lib/memcached 26 | ports: 27 | - "11211" 28 | depends_on: 29 | - php-fpm 30 | networks: 31 | - bitrix 32 | 33 | redis: 34 | build: 35 | context: ./docker/redis 36 | dockerfile: redis.docker 37 | volumes: 38 | - ./storage/docker/redis:/data 39 | ports: 40 | - "6379" 41 | networks: 42 | - bitrix 43 | 44 | php-fpm-cli: 45 | build: 46 | context: ./docker/php 47 | dockerfile: php-fpm-cli.docker 48 | volumes: 49 | - ./www:/var/www/bitrix 50 | depends_on: 51 | - mysql 52 | tty: true 53 | networks: 54 | - bitrix 55 | 56 | php-fpm: 57 | build: 58 | context: ./docker/php 59 | dockerfile: php-fpm.docker 60 | volumes: 61 | - ./www:/var/www/bitrix 62 | - ./storage/docker/logs/php/:/var/log/php/ 63 | depends_on: 64 | - mysql 65 | networks: 66 | - bitrix 67 | 68 | mysql: 69 | build: 70 | context: ./docker/mysql 71 | dockerfile: mysql.docker 72 | environment: 73 | MYSQL_DATABASE: ${MYSQL_DATABASE} 74 | MYSQL_USER: ${MYSQL_USER} 75 | MYSQL_PASSWORD: ${MYSQL_PASSWORD} 76 | MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} 77 | ports: 78 | - "33061:3306" 79 | networks: 80 | - bitrix 81 | 82 | mailhog: 83 | image: mailhog/mailhog 84 | restart: unless-stopped 85 | ports: 86 | - "1025:1025" 87 | - "8025:8025" 88 | networks: 89 | - bitrix 90 | 91 | networks: 92 | bitrix: 93 | driver: bridge 94 | ipam: 95 | driver: default 96 | config: 97 | - subnet: 10.100.0.0/24 -------------------------------------------------------------------------------- /docker/memcached/memcached.docker: -------------------------------------------------------------------------------- 1 | FROM memcached:latest -------------------------------------------------------------------------------- /docker/mysql/my.cnf: -------------------------------------------------------------------------------- 1 | [mysqld] 2 | sql_mode= 3 | default_time_zone="+03:00" 4 | innodb_flush_method = O_DIRECT 5 | innodb_flush_log_at_trx_commit = 2 6 | transaction-isolation = READ-COMMITTED 7 | innodb_buffer_pool_size = 56M 8 | -------------------------------------------------------------------------------- /docker/mysql/mysql.docker: -------------------------------------------------------------------------------- 1 | FROM mysql:5.7 2 | 3 | ADD ./my.cnf /etc/mysql/conf.d/my.cnf 4 | -------------------------------------------------------------------------------- /docker/nginx/default.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80 default; 3 | charset utf-8; 4 | index index.php index.html bitrixsetup.php; 5 | root /var/www/bitrix; 6 | 7 | client_max_body_size 32m; 8 | 9 | access_log /var/log/nginx/bitrix-access.log; 10 | error_log /var/log/nginx/bitrix-error.log; 11 | 12 | if (!-e $request_filename) { 13 | rewrite ^(.*)$ /bitrix/urlrewrite.php last; 14 | } 15 | 16 | location ~ \.php$ { 17 | if (!-f $request_filename) { 18 | rewrite ^(.*)/index.php$ $1/ redirect; 19 | } 20 | include fastcgi_params; 21 | fastcgi_split_path_info ^(.+\.php)(/.+)$; 22 | fastcgi_pass php-fpm:9000; 23 | fastcgi_index index.php; 24 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 25 | fastcgi_param PATH_INFO $fastcgi_path_info; 26 | fastcgi_param SERVER_NAME $host; 27 | } 28 | 29 | location ~ /upload/ { 30 | client_body_buffer_size 1024m; 31 | client_max_body_size 1024m; 32 | } 33 | 34 | location = /favicon.png { 35 | log_not_found off; 36 | access_log off; 37 | } 38 | 39 | location = /robots.txt { 40 | log_not_found off; 41 | access_log off; 42 | } 43 | 44 | location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|eot|otf|ttf|woff|woff2)$ { 45 | log_not_found off; 46 | access_log off; 47 | expires 30d; 48 | add_header Cache-Control public; 49 | } 50 | 51 | error_page 404 /404.html; 52 | 53 | location /404.html { 54 | 55 | } 56 | } -------------------------------------------------------------------------------- /docker/nginx/nginx.docker: -------------------------------------------------------------------------------- 1 | FROM nginx:1.14 2 | 3 | ADD ./default.conf /etc/nginx/conf.d/default.conf 4 | 5 | RUN usermod -u 1000 www-data 6 | 7 | WORKDIR /var/www/bitrix -------------------------------------------------------------------------------- /docker/php/memcached.ini: -------------------------------------------------------------------------------- 1 | [memcached] 2 | -------------------------------------------------------------------------------- /docker/php/opcache.ini: -------------------------------------------------------------------------------- 1 | [opcache] 2 | opcache.enable=1 3 | ; 0 means it will check on every request 4 | ; 0 is irrelevant if opcache.validate_timestamps=0 which is desirable in production 5 | opcache.revalidate_freq=0 6 | opcache.validate_timestamps=1 7 | opcache.max_accelerated_files=100000 8 | opcache.memory_consumption=192 9 | opcache.max_wasted_percentage=10 10 | opcache.interned_strings_buffer=16 11 | opcache.fast_shutdown=1 -------------------------------------------------------------------------------- /docker/php/php-fpm-cli.docker: -------------------------------------------------------------------------------- 1 | FROM php:7.3-fpm 2 | 3 | RUN apt-get update && apt-get install -y wget 4 | 5 | RUN docker-php-ext-install mysqli pdo pdo_mysql 6 | 7 | RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ 8 | && composer --version 9 | 10 | ADD ./php.ini /usr/local/etc/php/conf.d/php.ini 11 | ADD ./php.ini /usr/local/etc/php/conf.d/php.ini 12 | 13 | RUN usermod -u 1000 www-data 14 | 15 | WORKDIR /var/www/bitrix -------------------------------------------------------------------------------- /docker/php/php-fpm.docker: -------------------------------------------------------------------------------- 1 | FROM php:7.3-fpm 2 | 3 | RUN apt-get update && apt-get install -y libwebp-dev libjpeg62-turbo-dev libpng-dev libxpm-dev libfreetype6-dev 4 | 5 | RUN docker-php-ext-configure gd --with-gd --with-webp-dir --with-jpeg-dir \ 6 | --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir \ 7 | --enable-gd-native-ttf 8 | 9 | RUN docker-php-ext-install gd mysqli opcache pdo pdo_mysql 10 | 11 | RUN pecl install xdebug-2.7.0beta1 \ 12 | && docker-php-ext-enable xdebug 13 | 14 | # Sendmail 15 | RUN apt-get update &&\ 16 | apt-get install --no-install-recommends --assume-yes --quiet ca-certificates curl git &&\ 17 | rm -rf /var/lib/apt/lists/* 18 | RUN curl -Lsf 'https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz' | tar -C '/usr/local' -xvzf - 19 | ENV PATH /usr/local/go/bin:$PATH 20 | RUN go get github.com/mailhog/mhsendmail 21 | RUN cp /root/go/bin/mhsendmail /usr/bin/mhsendmail 22 | 23 | ADD ./php.ini /usr/local/etc/php/conf.d/php.ini 24 | ADD ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini 25 | ADD ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini 26 | ADD ./memcached.ini /usr/local/etc/php/conf.d/memcached.ini 27 | 28 | RUN usermod -u 1000 www-data 29 | RUN chmod 777 -R /tmp && chmod o+t -R /tmp 30 | 31 | WORKDIR /var/www/bitrix -------------------------------------------------------------------------------- /docker/php/php.ini: -------------------------------------------------------------------------------- 1 | short_open_tag = On 2 | display_errors = On 3 | error_log = "/var/log/php/error.log" 4 | error_reporting = E_ALL 5 | log_errors = On 6 | upload_max_filesize = 128M 7 | post_max_size = 128M 8 | max_input_vars = 10000 9 | mbstring.internal_encoding = "UTF-8" 10 | mbstring.func_overload = 2 11 | date.timezone = "Europe/Moscow" 12 | memory_limit = 512M 13 | 14 | [mail] 15 | sendmail_path = /usr/bin/mhsendmail --smtp-addr mailhog:1025 -------------------------------------------------------------------------------- /docker/php/xdebug.ini: -------------------------------------------------------------------------------- 1 | xdebug.remote_enable=on 2 | xdebug.remote_autostart=on 3 | xdebug.remote_connect_back=on 4 | xdebug.profiler_enable=on 5 | xdebug.remote_port=9000 6 | xdebug.remote_host=localhost 7 | xdebug.profiler_output_dir=/tmp/snapshots 8 | xdebug.idekey=docker -------------------------------------------------------------------------------- /docker/redis/redis.docker: -------------------------------------------------------------------------------- 1 | FROM redis:latest -------------------------------------------------------------------------------- /www/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sidigi/bitrix-docker/16f4054b1c05ff865abc0eb3acad0bf7ccdbdacb/www/.gitkeep --------------------------------------------------------------------------------