===== Климат мастер =====
Компания «Климат-Мастер» на сегодняшний день является крупным климатическим холдингом, в котором функционируют несколько Интернет-магазинов, а также несколько розничных шоурумов. Кроме того, мы активно сотрудничаем с региональными дилерами, а также развиваем сеть технического и сервисного обслуживания. Мы являемся официальным дилером таких брендов, как Daikin, Mitsubishi Heavy, Mitsubishi Electric, Boneco, Venta, Stadler Form, Sharp, Toshiba, Panasonic, а также многих других.
==== сайты ====
Структура папок и конфиги: {{:docker:готовые_решения:docker.rar|docker.rar}}
docker-compose.yaml
# Версия docker-compose
version: '3'
# Список наших сервисов (контейнеров)
services:
nginx:
# используем последний стабильный образ nginx
image: nginx:latest
# маршрутизируем порты
ports:
- "80:80"
- "443:443"
# монтируем директории, слева директории на основной машине, справа - куда они монтируются в контейнере
volumes:
- ../../hosts:/etc/nginx/conf.d
- ../../www:/var/www
- ../../logs:/var/log/nginx
- ../../files/imagick:/var/lib/apt/lists/
- /tmp:/tmp
# nginx должен общаться с php контейнером
networks:
my-net:
aliases: # алиасы нужны если нужно общаться внутри сети между хостами. Например, если вы используете api
- mir-vozduha.localhost
- local.api
- leto-zima.localhost
- venta-shop.localhost
- klimat-master.localhost
- airte.localhost
container_name: nginx5.6
php:
# у нас свой образ для PHP, указываем путь к нему и говорим что его надо собрать
build: ../../images/php5.6
# этот образ будет общаться с mysql
networks:
- my-net
# монтируем директорию с проектами
volumes:
- ../../www:/var/www
- ../../files/imagick:/var/lib/apt/lists/
- /tmp:/tmp
container_name: php5.6
db2:
image: "mysql:5.7"
environment:
MYSQL_ROOT_PASSWORD: 2619192
MYSQL_USER: mysql
MYSQL_PASSWORD: admin
MYSQL_DATABASE: kartoteka_local
ports:
- "3306:3306"
volumes:
- ../../mysql/mysql5.7:/var/lib/mysql
networks:
- my-net
container_name: mysql5.7
redis:
container_name: redis
image: redis
ports:
- "6379:6379"
volumes:
- ../../redis:/data
networks:
- my-net
phpredisadmin:
build: ../../images/phpRedisAdmin
environment:
- ADMIN_USER=admin
- ADMIN_PASS=admin
- REDIS_1_HOST=redis
- REDIS_1_PORT=6379
networks:
- my-net
ports:
- "8081:80"
networks:
my-net:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.223.0/28
Dockerfile
# Для начала указываем исходный образ, он будет использован как основа
FROM php:5.6-fpm
# Необязательная строка с указанием автора образа
MAINTAINER PHPtoday.ru
# RUN выполняет идущую за ней команду в контексте нашего образа.
# В данном случае мы установим некоторые зависимости и модули PHP.
# Для установки модулей используем команду docker-php-ext-install.
# На каждый RUN создается новый слой в образе, поэтому рекомендуется объединять команды.
RUN apt-get update && apt-get install -y \
curl \
wget \
git \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
libicu-dev \
libmemcached-dev \
libbz2-dev \
libssh2-1 \
libssh2-1-dev \
libssl-dev \
librabbitmq-dev \
libxml2-dev \
libxslt-dev \
&& docker-php-ext-install -j$(nproc) bcmath bz2 calendar exif intl zip opcache soap iconv mbstring mysqli pdo_mysql zip \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install xsl
RUN pecl install https://xdebug.org/files/xdebug-2.5.5.tgz \
RUN pecl install ssh2-0.13
RUN docker-php-ext-enable xdebug ssh2
RUN echo "error_reporting = E_ALL" > /usr/local/etc/php/php.ini
RUN echo "output_buffering = 4096">> /usr/local/etc/php/php.ini
RUN echo "post_max_size = 256M">> /usr/local/etc/php/php.ini
RUN echo "upload_max_filesize = 256M">> /usr/local/etc/php/php.ini
RUN echo "date.timezone = Europe/Moscow">> /usr/local/etc/php/php.ini
RUN echo "display_startup_errors = On">> /usr/local/etc/php/php.ini
RUN echo "display_errors = On">> /usr/local/etc/php/php.ini
RUN echo "expose_php = Off">> /usr/local/etc/php/php.ini
RUN echo "xdebug.remote_enable=1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
# RUN echo "xdebug.remote_connect_back=0">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.idekey=\"PHPSTORM\"">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_port=9000">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_autostart=1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_connect_back=1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.var_display_max_depth = -1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.var_display_max_children = -1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.var_display_max_data = -1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
# RUN echo "xdebug.remote_host=10.0.75.1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN chmod 777 /var/log
RUN pecl install mongodb && docker-php-ext-enable mongodb
RUN pecl install amqp && docker-php-ext-enable amqp
RUN pecl install redis-3.1.0 && docker-php-ext-enable redis
RUN pecl install memcached-2.2.0 && docker-php-ext-enable memcached
#Устанавливаем ImageMagick и необходимые библиотеки
RUN apt install -y libmagickwand-dev --no-install-recommends
RUN pecl install imagick && docker-php-ext-enable imagick
#rm -rf /var/lib/apt/lists/*
#RUN apt install -y imagemagick php-imagick
#RUN pecl install dbase && docker-php-ext-enable dbase
# Куда же без composer'а.
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Установить midnight-commander
RUN apt-get install -y mc
#7zip
RUN apt-get install -y p7zip p7zip-full
# ping
RUN apt-get install iputils-ping -y
#Codeception
RUN composer global require codeception/codeception
# Добавим свой php.ini, можем в нем определять свои значения конфига
#ADD php.ini /usr/local/etc/php/conf.d/40-custom.ini
ADD php.ini /usr/local/etc/php/php.ini
ENV DEBUG="local"
# Указываем рабочую директорию для PHP
WORKDIR /var/www
# Запускаем контейнер
# Из документации: The main purpose of a CMD is to provide defaults for an executing container. These defaults can include an executable,
# or they can omit the executable, in which case you must specify an ENTRYPOINT instruction as well.
CMD ["php-fpm"]
----
==== CRM ====
docker-compose.yaml
# Версия docker-compose
version: '3'
# Список наших сервисов (контейнеров)
services:
nginx:
# используем последний стабильный образ nginx
image: nginx:latest
restart: always
# маршрутизируем порты
ports:
- "80:80"
- "443:443"
# монтируем директории, слева директории на основной машине, справа - куда они монтируются в контейнере
volumes:
- ../../hosts:/etc/nginx/conf.d
- ../../www:/var/www
- ../../logs:/var/log/nginx
- ../../files/imagick:/var/lib/apt/lists/
- /tmp:/tmp
- /etc/localtime:/etc/localtime:ro
# nginx должен общаться с php контейнером
container_name: nginx7.2
# nginx должен общаться с php контейнером
networks:
internal:
aliases: # алиасы нужны если нужно общаться внутри сети между хостами. Например, если вы используете api
- mir-vozduha.localhost
- local.api
- leto-zima.localhost
- venta-shop.localhost
- klimat-master.localhost
- airte.localhost
php:
# у нас свой образ для PHP, указываем путь к нему и говорим что его надо собрать
build: ../../images/php
restart: always
# этот образ будет общаться с mysql
# монтируем директорию с проектами
volumes:
- ../../www:/var/www
- ../../files/imagick:/var/lib/apt/lists/
- /tmp:/tmp
- /etc/localtime:/etc/localtime:ro
container_name: php7.2
#environment:
#XDEBUG_CONFIG: "remote_host=192.168.220.1 remote_enable=1"
#PHP_IDE_CONFIG: "serverName=Docker"
networks:
- internal
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: 2619192
ports:
- 3306:3306
container_name: mysql8.0
volumes:
- ../../mysql/mysql8.0:/var/lib/mysql
- ../../mysql/dump:/data
- /etc/localtime:/etc/localtime:ro
networks:
- internal
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin-crm
restart: always
ports:
- 8080:80
environment:
MYSQL_ROOT_PASSWORD: 2619192
networks:
- internal
redis:
container_name: redis-crm
image: redis
ports:
- "6379:6379"
volumes:
- ../../redis-crm:/data
restart: always
networks:
- internal
phpredisadmin:
build: ../../images/phpRedisAdmin
container_name: phpRedisAdmin-crm
environment:
- ADMIN_USER=admin
- ADMIN_PASS=admin
- REDIS_1_HOST=redis
- REDIS_1_PORT=6379
restart: always
networks:
- internal
ports:
- "8081:80"
networks:
internal:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.220.0/28
Dockerfile
# Для начала указываем исходный образ, он будет использован как основа
FROM php:7.2-fpm
# Необязательная строка с указанием автора образа
MAINTAINER PHPtoday.ru
# RUN выполняет идущую за ней команду в контексте нашего образа.
# В данном случае мы установим некоторые зависимости и модули PHP.
# Для установки модулей используем команду docker-php-ext-install.
# На каждый RUN создается новый слой в образе, поэтому рекомендуется объединять команды.
RUN apt-get update && apt-get install -y \
curl \
wget \
git \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
libicu-dev \
libmemcached-dev \
libbz2-dev \
libssh2-1 \
libssh2-1-dev \
libssl-dev \
librabbitmq-dev \
libxml2-dev \
libxslt-dev \
&& docker-php-ext-install -j$(nproc) bcmath bz2 calendar exif intl zip opcache soap iconv mbstring mysqli pdo_mysql zip \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install xsl
RUN pecl install https://xdebug.org/files/xdebug-2.8.0.tgz
RUN pecl install ssh2-1.1.2
RUN docker-php-ext-enable xdebug ssh2
RUN echo "error_reporting = E_ALL" > /usr/local/etc/php/php.ini
RUN echo "output_buffering = 4096">> /usr/local/etc/php/php.ini
RUN echo "post_max_size = 256M">> /usr/local/etc/php/php.ini
RUN echo "upload_max_filesize = 256M">> /usr/local/etc/php/php.ini
RUN echo "date.timezone = Europe/Moscow">> /usr/local/etc/php/php.ini
RUN echo "display_startup_errors = On">> /usr/local/etc/php/php.ini
RUN echo "display_errors = On">> /usr/local/etc/php/php.ini
RUN echo "expose_php = Off">> /usr/local/etc/php/php.ini
RUN echo "xdebug.remote_enable=1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
# RUN echo "xdebug.remote_connect_back=0">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.idekey=\"PHPSTORM\"">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_port=9000">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_autostart=1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_connect_back=1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.var_display_max_depth = -1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.var_display_max_children = -1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.var_display_max_data = -1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN echo "xdebug.remote_host=192.168.220.1">> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
RUN chmod 777 /var/log
RUN pecl install mongodb && docker-php-ext-enable mongodb
RUN pecl install amqp && docker-php-ext-enable amqp
# # # RUN pecl install redis && docker-php-ext-enable redis
RUN pecl install memcached && docker-php-ext-enable memcached
#Устанавливаем ImageMagick и необходимые библиотеки
#RUN apt install -y libmagickwand-dev --no-install-recommends
RUN apt-get update && apt-get install -y libmagickwand-6.q16-dev --no-install-recommends \
&& ln -s /usr/lib/x86_64-linux-gnu/ImageMagick-6.8.9/bin-Q16/MagickWand-config /usr/bin \
&& pecl install imagick \
&& echo "extension=imagick.so" > /usr/local/etc/php/conf.d/ext-imagick.ini
#RUN pecl install imagick && docker-php-ext-enable imagick
#rm -rf /var/lib/apt/lists/*
#RUN apt install -y imagemagick php-imagick
RUN pecl install dbase && docker-php-ext-enable dbase
# Куда же без composer'а.
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Установить midnight-commander
RUN apt-get install -y mc
#7zip
RUN apt-get install -y p7zip p7zip-full
# ping
RUN apt-get install iputils-ping -y
#RUN apy-get install php7.2-cgi
#Codeception
RUN composer global require codeception/codeception
#Installer Microsoft ODBC Driver for SQL Server (Linux)
#https://docs.microsoft.com/fr-fr/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15
RUN apt-get install -y curl wget gnupg apt-transport-https
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y --assume-yes msodbcsql17
RUN ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated mssql-tools
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
#RUN source ~/.bashrc
RUN apt-get -y install libodbc1 unixodbc \
unixodbc-dev \
libgss3 \
odbcinst \
msodbcsql17 \
locales \
libgssapi-krb5-2 \
&& echo "ru_RU.UTF-8 UTF-8" > /etc/locale.gen && locale-gen
#install mssql
RUN pecl install pdo_sqlsrv-5.3.0 sqlsrv-5.3.0
RUN docker-php-ext-enable sqlsrv
RUN docker-php-ext-enable pdo_sqlsrv
#screenfetch описание системы
RUN apt-get install screenfetch -y
#openssl
RUN apt-get update -yqq
RUN apt-get install -y --no-install-recommends openssl
RUN sed -i 's,^\(MinProtocol[ ]*=\).*,\1'TLSv1.0',g' /etc/ssl/openssl.cnf
RUN sed -i 's,^\(CipherString[ ]*=\).*,\1'DEFAULT@SECLEVEL=1',g' /etc/ssl/openssl.cnf
RUN rm -rf /var/lib/apt/lists/*
# Добавим свой php.ini, можем в нем определять свои значения конфига
#ADD php.ini /usr/local/etc/php/conf.d/40-custom.ini
ADD php.ini /usr/local/etc/php/php.ini
# Указываем рабочую директорию для PHP
WORKDIR /var/www
# Запускаем контейнер
# Из документации: The main purpose of a CMD is to provide defaults for an executing container. These defaults can include an executable,
# or they can omit the executable, in which case you must specify an ENTRYPOINT instruction as well.
CMD ["php-fpm"]
Структура папок: {{:docker:готовые_решения:docker.rar|docker.rar}}