diff --git a/.gitignore b/.gitignore index 41b3dadc..8544f178 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,4 @@ node_modules/* web/dist/*.map web/admin/dist/*.map web/modules/dist/*.map -.gitkeep +docker/db_data diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..f1a5d39d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,49 @@ +FROM alpine:3.11 +LABEL Maintainer="Thilina, Pituwala " \ + Description="IceHrm Docker Container with Nginx 1.16 & PHP-FPM 7.3 based on Alpine Linux." + +# 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 + +# Configure nginx +COPY docker/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 + +# Configure supervisord +COPY docker/config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf + +# Setup document root +RUN mkdir -p /var/www/html + +# Make sure files/folders needed by the processes are accessable when they run under the nobody user +RUN chown -R nobody.nobody /var/www/html && \ + chown -R nobody.nobody /run && \ + chown -R nobody.nobody /var/lib/nginx && \ + chown -R nobody.nobody /var/log/nginx + +# Switch to use a non-root user from here on +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 ./docker/config/config.php /var/www/html/app/config.php + +# Expose the port nginx is reachable on +EXPOSE 8080 + +# Let supervisord start nginx & php-fpm +CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] + +# Configure a healthcheck to validate that everything is up&running +HEALTHCHECK --timeout=10s CMD curl --silent --fail http://127.0.0.1:8080/fpm-ping diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 00000000..b54a3cb5 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,21 @@ +version: "3.5" +services: + mysql: + image: mysql:5.7 + ports: + - 3306:3306 + environment: + MYSQL_ROOT_PASSWORD: IceHrmR00t + MYSQL_USER: dev + MYSQL_PASSWORD: dev + MYSQL_DATABASE: dev + volumes: + - ./docker/init.sql:/docker-entrypoint-initdb.d/setup.sql + - ./docker/db_data:/var/lib/mysql + + icehrm: + build: . + ports: + - 8080:8080 +volumes: + db_data: diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 00000000..5ec7d4be --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,49 @@ +FROM alpine:3.11 +LABEL Maintainer="Thilina, Pituwala " \ + Description="IceHrm Docker Container with Nginx 1.16 & PHP-FPM 7.3 based on Alpine Linux." + +# 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 + +# Configure nginx +COPY 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 + +# Configure supervisord +COPY config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf + +# Setup document root +RUN mkdir -p /var/www/html + +# Make sure files/folders needed by the processes are accessable when they run under the nobody user +RUN chown -R nobody.nobody /var/www/html && \ + chown -R nobody.nobody /run && \ + chown -R nobody.nobody /var/lib/nginx && \ + chown -R nobody.nobody /var/log/nginx + +# Switch to use a non-root user from here on +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 + +# Expose the port nginx is reachable on +EXPOSE 8080 + +# Let supervisord start nginx & php-fpm +CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"] + +# Configure a healthcheck to validate that everything is up&running +HEALTHCHECK --timeout=10s CMD curl --silent --fail http://127.0.0.1:8080/fpm-ping diff --git a/docker/config/config.php b/docker/config/config.php new file mode 100644 index 00000000..f8ce840e --- /dev/null +++ b/docker/config/config.php @@ -0,0 +1,18 @@ + IceHrm =========== [![Build Status](https://travis-ci.org/gamonoid/icehrm.svg?branch=master)](https://travis-ci.org/gamonoid/icehrm) diff --git a/web/images/logo-sq.png b/web/images/logo-sq.png new file mode 100644 index 00000000..803c60f2 Binary files /dev/null and b/web/images/logo-sq.png differ