diff --git a/.gitignore b/.gitignore index 8544f178..3a309ed2 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,5 @@ node_modules/* web/dist/*.map web/admin/dist/*.map web/modules/dist/*.map -docker/db_data +docker/development/db_data +docker/prod/db_data diff --git a/Dockerfile b/Dockerfile index f1a5d39d..d229545a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,22 +2,42 @@ FROM alpine:3.11 LABEL Maintainer="Thilina, Pituwala " \ Description="IceHrm Docker Container with Nginx 1.16 & PHP-FPM 7.3 based on Alpine Linux." +ENV PHPIZE_DEPS \ + autoconf \ + dpkg-dev dpkg \ + file \ + g++ \ + gcc \ + libc-dev \ + make \ + pkgconf \ + musl-dev \ + re2c \ + php7-dev \ + php7-pear + +RUN apk --no-cache add bind-tools + # Install packages -RUN apk --no-cache add php7 php7-fpm php7-opcache php7-mysqli php7-json php7-openssl php7-curl \ - php7-zlib php7-xml php7-phar php7-intl php7-dom php7-xmlreader php7-ctype php7-session \ - php7-mbstring php7-gd nginx supervisor curl +RUN apk --no-cache add php php-fpm php-opcache php-mysqli php-json php-openssl php-curl \ + php-zlib php-xml php-phar php-intl php-dom php-xmlreader php-ctype php-session \ + php-mbstring php-gd nginx supervisor curl + +# Install xdebug +RUN apk add --no-cache $PHPIZE_DEPS \ + && pecl install xdebug-2.9.5 # Configure nginx -COPY docker/config/nginx.conf /etc/nginx/nginx.conf +COPY docker/development/config/nginx.conf /etc/nginx/nginx.conf # Remove default server definition RUN rm /etc/nginx/conf.d/default.conf # Configure PHP-FPM -COPY docker/config/fpm-pool.conf /etc/php7/php-fpm.d/www.conf -COPY docker/config/php.ini /etc/php7/conf.d/custom.ini +COPY docker/development/config/fpm-pool.conf /etc/php7/php-fpm.d/www.conf +COPY docker/development/config/php.ini /etc/php7/conf.d/custom.ini # Configure supervisord -COPY docker/config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf +COPY docker/development/config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf # Setup document root RUN mkdir -p /var/www/html @@ -37,7 +57,8 @@ COPY --chown=nobody ./app /var/www/html/app/ COPY --chown=nobody ./core /var/www/html/core/ COPY --chown=nobody ./web /var/www/html/web/ COPY --chown=nobody ./index.php /var/www/html/index.php -COPY --chown=nobody ./docker/config/config.php /var/www/html/app/config.php +COPY --chown=nobody ./docker/development/config/config.php /var/www/html/app/config.php +COPY --chown=nobody ./docker/development/config/info.php /var/www/html/app/info.php # Expose the port nginx is reachable on EXPOSE 8080 diff --git a/docker/Dockerfile b/Dockerfile-prod similarity index 70% rename from docker/Dockerfile rename to Dockerfile-prod index 5ec7d4be..2eca4a1e 100644 --- a/docker/Dockerfile +++ b/Dockerfile-prod @@ -8,16 +8,16 @@ RUN apk --no-cache add php7 php7-fpm php7-opcache php7-mysqli php7-json php7-ope php7-mbstring php7-gd nginx supervisor curl # Configure nginx -COPY config/nginx.conf /etc/nginx/nginx.conf +COPY docker/prod/config/nginx.conf /etc/nginx/nginx.conf # Remove default server definition RUN rm /etc/nginx/conf.d/default.conf # Configure PHP-FPM -COPY config/fpm-pool.conf /etc/php7/php-fpm.d/www.conf -COPY config/php.ini /etc/php7/conf.d/custom.ini +COPY docker/prod/config/fpm-pool.conf /etc/php7/php-fpm.d/www.conf +COPY docker/prod/config/php.ini /etc/php7/conf.d/custom.ini # Configure supervisord -COPY config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf +COPY docker/prod/config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf # Setup document root RUN mkdir -p /var/www/html @@ -33,11 +33,11 @@ USER nobody # Add application WORKDIR /var/www/html -COPY --chown=nobody ../app /var/www/html/app/ -COPY --chown=nobody ../core /var/www/html/core/ -COPY --chown=nobody ../web /var/www/html/web/ -COPY --chown=nobody ../index.php /var/www/html/index.php -COPY --chown=nobody ../config/config.php /var/www/html/app/config.php +COPY --chown=nobody ./app /var/www/html/app/ +COPY --chown=nobody ./core /var/www/html/core/ +COPY --chown=nobody ./web /var/www/html/web/ +COPY --chown=nobody ./index.php /var/www/html/index.php +COPY --chown=nobody ./docker/prod/config/config.php /var/www/html/app/config.php # Expose the port nginx is reachable on EXPOSE 8080 diff --git a/docker/docker-compose.yaml b/docker-compose-prod.yaml similarity index 67% rename from docker/docker-compose.yaml rename to docker-compose-prod.yaml index 6191ccfb..d1982090 100644 --- a/docker/docker-compose.yaml +++ b/docker-compose-prod.yaml @@ -10,14 +10,12 @@ services: MYSQL_PASSWORD: dev MYSQL_DATABASE: dev volumes: - - ./init.sql:/docker-entrypoint-initdb.d/setup.sql - - ./db_data:/var/lib/mysql + - ./docker/prod/init.sql:/docker-entrypoint-initdb.d/setup.sql + - ./docker/prod/db_data:/var/lib/mysql icehrm: build: . ports: - - 8080:8080 - links: - - mysql + - 80:80 volumes: db_data: diff --git a/docker-compose.yaml b/docker-compose.yaml index b54a3cb5..06f09168 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,4 +1,4 @@ -version: "3.5" +version: "2.4" services: mysql: image: mysql:5.7 @@ -10,8 +10,8 @@ services: MYSQL_PASSWORD: dev MYSQL_DATABASE: dev volumes: - - ./docker/init.sql:/docker-entrypoint-initdb.d/setup.sql - - ./docker/db_data:/var/lib/mysql + - ./docker/development/init.sql:/docker-entrypoint-initdb.d/setup.sql + - ./docker/development/db_data:/var/lib/mysql icehrm: build: . diff --git a/docker/config/config.php b/docker/development/config/config.php similarity index 100% rename from docker/config/config.php rename to docker/development/config/config.php diff --git a/docker/config/fpm-pool.conf b/docker/development/config/fpm-pool.conf similarity index 100% rename from docker/config/fpm-pool.conf rename to docker/development/config/fpm-pool.conf diff --git a/docker/development/config/info.php b/docker/development/config/info.php new file mode 100644 index 00000000..61ace196 --- /dev/null +++ b/docker/development/config/info.php @@ -0,0 +1,2 @@ +