Docker example for yii2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# https://phptoday.ru/post/gotovim-lokalnuyu-sredu-docker-dlya-razrabotki-na-php # Версия docker-compose version: '2' # Список наших сервисов (контейнеров) services: nginx: container_name: nginx # используем последний стабильный образ nginx image: nginx:latest networks: application_nerwork: ipv4_address: 172.18.18.2 # маршрутизируем порты ports: - "80:80" - "443:443" # монтируем директории, слева директории на основной машине, справа - куда они монтируются в контейнере volumes: - ./hosts:/etc/nginx/conf.d - ./www:/var/www - ./logs:/var/log/nginx # nginx должен общаться с php контейнером links: - php php: container_name: php # у нас свой образ для PHP, указываем путь к нему и говорим что его надо собрать build: ./images/php networks: application_nerwork: ipv4_address: 172.18.18.3 # этот образ будет общаться с mysql links: - mariadb depends_on: - mariadb # монтируем директорию с проектами volumes: - ./www:/var/www mariadb: container_name: mariadb image: mariadb:10.3 expose: - 3312 networks: application_nerwork: ipv4_address: 172.18.18.4 ports: - 3312:3306 volumes: - ./mariadb:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root_password_security phpmyadmin: container_name: phpmyadmin image: phpmyadmin/phpmyadmin networks: application_nerwork: ipv4_address: 172.18.18.5 ports: - 8765:80 environment: MYSQL_ROOT_PASSWORD: root_password_security links: - mariadb:db depends_on: - mariadb networks: application_nerwork: driver: bridge driver_opts: com.docker.network.enable_ipv6: "false" ipam: driver: default config: - subnet: 172.18.18.0/24 gateway: 172.18.18.1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
server { server_name yii2docker.dev; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/yii2docker.dev/web; index index.php; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } location / { # Перенаправляем все запросы к несуществующим директориям и файлам на index.php try_files $uri $uri/ /index.php?$args; } location ~ /\.(ht|svn|git) { deny all; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
FROM php:7.1-fpm-alpine # intl, zip, soap RUN apk add --update --no-cache libintl icu icu-dev libxml2-dev \ && docker-php-ext-install intl zip soap # mysqli, pdo, pdo_mysql RUN docker-php-ext-install mysqli pdo pdo_mysql # mcrypt, gd, iconv RUN apk add --update --no-cache freetype-dev libjpeg-turbo-dev libmcrypt-dev libpng-dev \ && docker-php-ext-install iconv mcrypt \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install gd # gmp, bcmath RUN apk add --update --no-cache gmp gmp-dev \ && docker-php-ext-install gmp bcmath # redis, apcu RUN docker-php-source extract \ && apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS \ && pecl install redis \ && pecl install apcu \ && docker-php-ext-enable redis apcu \ && apk del .phpize-deps-configure \ && docker-php-source delete # imagick RUN apk add --update --no-cache autoconf g++ imagemagick-dev libtool make pcre-dev \ && pecl install imagick \ && docker-php-ext-enable imagick \ && apk del autoconf g++ libtool make pcre-dev # git client, mysql-client RUN apk add --update --no-cache git mysql-client # pcntl RUN docker-php-ext-install pcntl RUN sed -i -e 's/listen.*/listen = 0.0.0.0:9000/' /usr/local/etc/php-fpm.conf RUN echo "expose_php=0" > /usr/local/etc/php/php.ini WORKDIR /var/www CMD ["php-fpm"] |
в config/db host прописываем IP mariadb или название контейнера в данном случае mariadb