Explorar el Código

#3744 Docker compose for development environment

Alex Trofimov hace 4 años
padre
commit
cf105eb966

+ 59 - 0
docker-compose.yml

@@ -0,0 +1,59 @@
+version: '3'
+services:
+    web:
+        image: nginx:latest
+        ports:
+            - "80:80"
+        volumes:
+            - ./scripts/docker-compose/nginx.conf:/etc/nginx/conf.d/default.conf
+            - ./:/opt/una
+        depends_on:
+            - php
+    php:
+        build:
+            context: .
+            dockerfile: scripts/docker-compose/PHP.Dockerfile
+        volumes:
+            - ./scripts/docker-compose/php.ini:/usr/local/etc/php/php.ini
+            - ./:/opt/una
+        depends_on:
+            - mysql
+    cron:
+        build:
+            context: .
+            dockerfile: scripts/docker-compose/Cron.Dockerfile
+        volumes:
+            - ./scripts/docker-compose/php.ini:/usr/local/etc/php/php.ini
+            - ./:/opt/una
+        depends_on:
+            - mysql
+    mysql:
+        image: mariadb:latest
+        environment:
+            MYSQL_ROOT_PASSWORD: 'root'
+            MYSQL_USER: 'una'
+            MYSQL_PASSWORD: 'una'
+            MYSQL_DATABASE: 'una'
+        volumes:
+            - mysqldata:/var/lib/mysql
+            - ./scripts/docker-compose/db_dump.sql:/docker-entrypoint-initdb.d/db_dump.sql
+        ports:
+            - 3306:3306
+    jot:
+        image: unaio/jot-server:latest
+        restart: always
+        ports:
+            - 5000:5000
+    phpmyadmin:
+        image: phpmyadmin
+        restart: always
+        ports:
+            - 8080:80
+        environment:
+            - PMA_HOST=mysql
+            - PMA_USER=una
+            - PMA_PASSWORD=una
+        depends_on:
+            - mysql
+volumes:
+    mysqldata: {}

+ 23 - 0
scripts/docker-compose/Cron.Dockerfile

@@ -0,0 +1,23 @@
+FROM php:8.0-cli
+
+RUN apt-get update && apt-get install -y \
+        cron \
+        libfreetype6-dev \
+        libjpeg62-turbo-dev \
+        libmcrypt-dev \
+        libpng-dev \
+        libonig-dev \
+        libmagickwand-dev \
+        libzip-dev \
+        unzip \
+    && docker-php-ext-configure gd --with-freetype --with-jpeg \
+    && docker-php-ext-install -j$(nproc) gd \
+    && docker-php-ext-install -j$(nproc) pdo pdo_mysql \
+    && docker-php-ext-install -j$(nproc) zip exif opcache iconv mbstring \
+#    && pecl install xdebug && docker-php-ext-enable xdebug \
+#    && pecl install mcrypt-1.0.4 && docker-php-ext-enable mcrypt \
+    && pecl install imagick-3.7.0 && docker-php-ext-enable imagick
+
+RUN echo "* * * * * /usr/local/bin/php -c /usr/local/etc/php /opt/una/periodic/cron.php 2>&1 | sed -e \"s/\(.*\)/[\`date\`] \1/\" >>/var/log/unacron.log" > /tmp/crontab && crontab /tmp/crontab && rm -f /tmp/crontab
+
+CMD ["cron", "-f"]

+ 20 - 0
scripts/docker-compose/PHP.Dockerfile

@@ -0,0 +1,20 @@
+FROM php:8.0-fpm
+
+RUN apt-get update && apt-get install -y \
+        cron \
+        libfreetype6-dev \
+        libjpeg62-turbo-dev \
+        libmcrypt-dev \
+        libpng-dev \
+        libonig-dev \
+        libmagickwand-dev \
+        libzip-dev \
+        unzip \
+    && docker-php-ext-configure gd --with-freetype --with-jpeg \
+    && docker-php-ext-install -j$(nproc) gd \
+    && docker-php-ext-install -j$(nproc) pdo pdo_mysql \
+    && docker-php-ext-install -j$(nproc) zip exif opcache iconv mbstring \
+#    && pecl install xdebug && docker-php-ext-enable xdebug \
+#    && pecl install mcrypt-1.0.3 && docker-php-ext-enable mcrypt \
+    && pecl install imagick-3.7.0 && docker-php-ext-enable imagick
+

+ 0 - 0
scripts/docker-compose/db_dump.sql


+ 27 - 0
scripts/docker-compose/nginx.conf

@@ -0,0 +1,27 @@
+#
+
+server {
+    listen 80 default_server;
+    root /opt/una;
+
+    location / {
+        index index.html index.htm index.php;
+
+        rewrite "^/page/(.*)$" /page.php?i=$1 last;
+        rewrite "^/m/(.*)$" /modules/index.php?r=$1 last;
+        rewrite "^/s/([a-zA-Z0-9_]+)/([a-zA-Z0-9\.]+)" /storage.php?o=$1&f=$2 last;
+
+        if (!-e $request_filename) {
+            rewrite  ^/(.+)$  /r.php?_q=$1  last;
+            break;
+        }
+    }
+
+    index index.php index.html index.htm;
+
+    location ~ \.php$ {
+        fastcgi_pass php:9000;
+        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+        include fastcgi_params;
+    }
+}

+ 15 - 0
scripts/docker-compose/php.ini

@@ -0,0 +1,15 @@
+upload_max_filesize=200M
+post_max_size=200M
+html_errors = On
+error_prepend_string = "<pre style='white-space: pre-line'>"
+error_append_string = "</pre>"
+
+[opcache]
+opcache.enable=1
+opcache.revalidate_freq=0
+opcache.validate_timestamps=1
+opcache.max_accelerated_files=100000
+opcache.memory_consumption=72
+opcache.max_wasted_percentage=20
+opcache.interned_strings_buffer=16
+opcache.fast_shutdown=1