diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 3a17a2e..0000000 --- a/Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -FROM php:7.3-fpm-alpine - -RUN apk add --no-cache --virtual .build-deps \ - $PHPIZE_DEPS \ - curl-dev \ - imagemagick-dev \ - libtool \ - libxml2-dev \ - postgresql-dev \ - sqlite-dev \ - && apk add --no-cache \ - curl \ - git \ - gd \ - imagemagick \ - mysql-client \ - postgresql-libs \ - libintl \ - icu \ - icu-dev \ - libzip-dev \ - && pecl install imagick \ - && docker-php-ext-enable imagick \ - && apk add --no-cache freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev && \ - docker-php-ext-configure gd \ - --with-gd \ - --with-freetype-dir=/usr/include/ \ - --with-png-dir=/usr/include/ \ - --with-jpeg-dir=/usr/include/ && \ - NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) && \ - docker-php-ext-install -j${NPROC} gd && \ - apk del --no-cache freetype-dev libpng-dev libjpeg-turbo-dev \ - && docker-php-ext-install \ - bcmath \ - curl \ - iconv \ - mbstring \ - pdo \ - pdo_mysql \ - pdo_pgsql \ - pdo_sqlite \ - pcntl \ - tokenizer \ - xml \ - zip \ - intl \ - && apk del -f .build-deps - -COPY --from=composer:latest /usr/bin/composer /usr/bin/composer - -ENV COMPOSER_ALLOW_SUPERUSER=1 -RUN composer global require hirak/prestissimo --prefer-dist --no-progress --no-suggest --classmap-authoritative \ - && composer clear-cache -ENV PATH="${PATH}:/root/.composer/vendor/bin" - -WORKDIR /var/www/html -RUN mkdir -p storage bootstrap/cache -# Authorize these folders to be edited -RUN chmod -R 777 storage bootstrap/cache diff --git a/docker-compose.yml b/docker-compose.yml index fcfca3b..422a1c3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,82 +1,49 @@ -version: '3' - -networks: - akaunting: - -volumes: - mysqldata: -# pgsqldata: +version: '3.7' services: nginx: - image: nginx:stable-alpine - container_name: nginx + image: nginx ports: - - "8080:80" + - 8080:80 volumes: - - ./:/var/www/html - - ./nginx.example.com.conf:/etc/nginx/conf.d/default.conf - depends_on: - - php - - mysql + - ./nginx/conf.d:/etc/nginx/conf.d:ro + - .:/var/www/akaunting.test + restart: unless-stopped + networks: + akaunting: + aliases: + - akaunting.test + + app: + build: ./php + user: "1000:1000" + expose: + - 9000 + volumes: + - .:/var/www/akaunting.test + restart: unless-stopped + environment: + APP_DEBUG: "true" networks: - akaunting mysql: image: mysql:5 - container_name: mysql - restart: unless-stopped - volumes: - - mysqldata:/var/lib/mysql - tty: true ports: - - "3306:3306" + - 3306:3306 + volumes: + - db-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: akaunting_root_password MYSQL_DATABASE: akaunting_db MYSQL_USER: akaunting_admin MYSQL_PASSWORD: akaunting_password - SERVICE_TAGS: dev - SERVICE_NAME: mysql networks: - akaunting + command: --default-authentication-plugin=mysql_native_password -# pgsql: -# image: postgres:9.6-alpine -# volumes: -# - pgsqldata:/var/lib/postgresql/data -# environment: -# - "POSTGRES_DB=akaunting_db" -# - "POSTGRES_USER=akaunting_admin" -# - "POSTGRES_PASSWORD=akaunting_password" -# ports: -# - "5432:5432" +volumes: + db-data: - php: - build: - context: . - dockerfile: Dockerfile - container_name: php - volumes: - - ./:/var/www/html - ports: - - "9000:9000" - networks: - - akaunting - depends_on: - - mysql - - -# redis: -# container_name: redis -# image: redis:4.0-alpine -# command: redis-server --appendonly yes -# networks: -# - akaunting -# ports: -# - "6379:6379" - -# elastic: -# image: elasticsearch:5.5-alpine -# ports: -# - "9200:9200" +networks: + akaunting: \ No newline at end of file diff --git a/nginx/conf.d/akaunting.test.conf b/nginx/conf.d/akaunting.test.conf new file mode 100644 index 0000000..ef85bcc --- /dev/null +++ b/nginx/conf.d/akaunting.test.conf @@ -0,0 +1,46 @@ +server { + server_name akaunting.test; + listen 80 default_server; + + access_log /dev/stdout; + error_log /dev/stdout; + + root /var/www/akaunting.test; + index index.php index.html; + + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-XSS-Protection "1; mode=block"; + add_header X-Content-Type-Options "nosniff"; + + charset utf-8; + + # Prevent Direct Access To Protected Files + location ~ \.(env|log) { + deny all; + } + + # Prevent Direct Access To Protected Folders + location ~ ^/(^app$|bootstrap|config|database|resources|routes|storage|tests|artisan) { + deny all; + } + + # Prevent Direct Access To modules/vendor Folders Except Assets + location ~ ^/(modules|vendor)\/(.*)\.((?!ico|gif|jpg|jpeg|png|js|css|less|sass|font|woff|woff2|eot|ttf|svg).)*$ { + deny all; + } + + location / { + try_files $uri $uri/ /index.php?$query_string; + gzip_static on; + } + + location ~ \.php$ { + try_files $uri =404; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass app:9000; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + } +} \ No newline at end of file diff --git a/php/Dockerfile b/php/Dockerfile new file mode 100644 index 0000000..89e2fd9 --- /dev/null +++ b/php/Dockerfile @@ -0,0 +1,36 @@ +FROM php:7.2-fpm + +RUN apt-get update && apt-get install -y \ + imagemagick \ + libfreetype6-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpng-dev \ + libpq-dev \ + libxrender1 \ + locales \ + openssh-client \ + patch \ + unzip \ + zlib1g-dev \ + --no-install-recommends && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +RUN cp /usr/share/i18n/SUPPORTED /etc/locale.gen +RUN locale-gen + +RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ + +RUN docker-php-ext-install \ + gd \ + pcntl \ + pdo_mysql \ + zip + +RUN pecl channel-update pecl.php.net \ + && printf "\n" | pecl install mcrypt-1.0.2 \ + && printf "\n" | pecl install xdebug-2.7.2 \ + && docker-php-ext-enable mcrypt xdebug + +COPY conf/xdebug.ini /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini +COPY conf/zz-docker.conf /usr/local/etc/php-fpm.d/zz-docker.conf \ No newline at end of file diff --git a/php/conf/xdebug.ini b/php/conf/xdebug.ini new file mode 100644 index 0000000..8567ce0 --- /dev/null +++ b/php/conf/xdebug.ini @@ -0,0 +1,4 @@ +zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so +xdebug.remote_connect_back=1 +xdebug.remote_enable=1 +xdebug.remote_port=9000 \ No newline at end of file diff --git a/php/conf/zz-docker.conf b/php/conf/zz-docker.conf new file mode 100644 index 0000000..63d12bf --- /dev/null +++ b/php/conf/zz-docker.conf @@ -0,0 +1,10 @@ +[global] +daemonize = no + +[www] +listen = 9000 + +pm = dynamic +pm.max_children = 64 +pm.process_idle_timeout = 2s +pm.max_requests = 1000 \ No newline at end of file