diff --git a/.docker/mariadb/Dockerfile b/.docker/mariadb/Dockerfile index 37de186..d9b2c5e 100644 --- a/.docker/mariadb/Dockerfile +++ b/.docker/mariadb/Dockerfile @@ -10,7 +10,7 @@ LABEL maintainer="Mahmoud Zalt " ARG TZ=UTC ENV TZ ${TZ} RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && chown -R mysql:root /var/lib/mysql/ -COPY my.cnf /etc/mysql/my.cnf +COPY mariadb/my.cnf /etc/mysql/my.cnf RUN chmod -R 644 /etc/mysql/my.cnf diff --git a/.docker/nginx/Dockerfile b/.docker/nginx/Dockerfile index ef60ee8..ec4cb01 100644 --- a/.docker/nginx/Dockerfile +++ b/.docker/nginx/Dockerfile @@ -2,7 +2,7 @@ FROM nginx:alpine LABEL maintainer="Mahmoud Zalt " -COPY nginx.conf /etc/nginx/ +COPY nginx/nginx.conf /etc/nginx/ RUN apk update \ && apk upgrade \ @@ -24,8 +24,35 @@ RUN touch /var/log/messages RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf \ && rm /etc/nginx/conf.d/default.conf -ADD ./startup.sh /opt/startup.sh +COPY nginx/startup.sh /opt/startup.sh RUN sed -i 's/\r//g' /opt/startup.sh + +# Add InvoicePlane banner to bash profile +COPY invoiceplane-banner.sh /root/invoiceplane-banner.sh +RUN sed -i 's/\r//g' /root/invoiceplane-banner.sh && \ + chmod +x /root/invoiceplane-banner.sh && \ + echo "" >> /root/.bashrc && \ + echo "# Set container type for banner" >> /root/.bashrc && \ + echo "export CONTAINER_TYPE='Nginx Container'" >> /root/.bashrc && \ + echo "# Load InvoicePlane Banner" >> /root/.bashrc && \ + echo "if [ -f ~/invoiceplane-banner.sh ]; then" >> /root/.bashrc && \ + echo " source ~/invoiceplane-banner.sh" >> /root/.bashrc && \ + echo "fi" >> /root/.bashrc && \ + # Also add banner for www-data user \ + mkdir -p /home/www-data && \ + cp /root/invoiceplane-banner.sh /home/www-data/invoiceplane-banner.sh && \ + chown www-data:www-data /home/www-data/invoiceplane-banner.sh && \ + chmod +x /home/www-data/invoiceplane-banner.sh && \ + touch /home/www-data/.bashrc && \ + chown www-data:www-data /home/www-data/.bashrc && \ + echo "" >> /home/www-data/.bashrc && \ + echo "# Set container type for banner" >> /home/www-data/.bashrc && \ + echo "export CONTAINER_TYPE='Nginx Container'" >> /home/www-data/.bashrc && \ + echo "# Load InvoicePlane Banner" >> /home/www-data/.bashrc && \ + echo "if [ -f ~/invoiceplane-banner.sh ]; then" >> /home/www-data/.bashrc && \ + echo " source ~/invoiceplane-banner.sh" >> /home/www-data/.bashrc && \ + echo "fi" >> /home/www-data/.bashrc + CMD ["/bin/bash", "/opt/startup.sh"] EXPOSE 80 81 443 diff --git a/.docker/php-fpm/Dockerfile b/.docker/php-fpm/Dockerfile index 14e43c1..092e064 100644 --- a/.docker/php-fpm/Dockerfile +++ b/.docker/php-fpm/Dockerfile @@ -239,7 +239,7 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \ ;fi # Copy xdebug configuration for remote debugging -COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini +COPY php-fpm/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] || { [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "3" ] ;} ;}; then \ sed -i "s/xdebug.remote_host=/xdebug.client_host=/" /usr/local/etc/php/conf.d/xdebug.ini && \ @@ -690,7 +690,7 @@ RUN if [ ${INSTALL_OPCACHE} = true ]; then \ ;fi # Copy opcache configration -COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini +COPY php-fpm/opcache.ini /usr/local/etc/php/conf.d/opcache.ini ########################################################################### # Mysqli Modifications: @@ -1368,8 +1368,8 @@ RUN set -xe; php -v | grep -q "PHP ${IVPLDOCK_PHP_VERSION}." #-------------------------------------------------------------------------- # -COPY ./laravel.ini /usr/local/etc/php/conf.d -COPY ./xlaravel.pool.conf /usr/local/etc/php-fpm.d/ +COPY php-fpm/laravel.ini /usr/local/etc/php/conf.d +COPY php-fpm/xlaravel.pool.conf /usr/local/etc/php-fpm.d/ USER root @@ -1400,8 +1400,9 @@ ENV LC_ALL ${LOCALE} RUN echo "php_admin_value[memory_limit] = 1024M" >> /usr/local/etc/php-fpm.d/www.conf # Add InvoicePlane banner to bash profile -COPY ../invoiceplane-banner.sh /root/invoiceplane-banner.sh -RUN chmod +x /root/invoiceplane-banner.sh && \ +COPY invoiceplane-banner.sh /root/invoiceplane-banner.sh +RUN sed -i 's/\r//g' /root/invoiceplane-banner.sh && \ + chmod +x /root/invoiceplane-banner.sh && \ echo "" >> /root/.bashrc && \ echo "# Set container type for banner" >> /root/.bashrc && \ echo "export CONTAINER_TYPE='PHP-FPM Container'" >> /root/.bashrc && \ diff --git a/.docker/php-worker/Dockerfile b/.docker/php-worker/Dockerfile index 98e176b..20d153c 100644 --- a/.docker/php-worker/Dockerfile +++ b/.docker/php-worker/Dockerfile @@ -631,7 +631,32 @@ RUN set -eux; \ # Make sure you rebuild your container with every change. # -COPY supervisord.conf /etc/supervisord.conf +COPY php-worker/supervisord.conf /etc/supervisord.conf + +# Add InvoicePlane banner to bash profile +COPY invoiceplane-banner.sh /root/invoiceplane-banner.sh +RUN sed -i 's/\r//g' /root/invoiceplane-banner.sh && \ + chmod +x /root/invoiceplane-banner.sh && \ + echo "" >> /root/.bashrc && \ + echo "# Set container type for banner" >> /root/.bashrc && \ + echo "export CONTAINER_TYPE='PHP Worker Container'" >> /root/.bashrc && \ + echo "# Load InvoicePlane Banner" >> /root/.bashrc && \ + echo "if [ -f ~/invoiceplane-banner.sh ]; then" >> /root/.bashrc && \ + echo " source ~/invoiceplane-banner.sh" >> /root/.bashrc && \ + echo "fi" >> /root/.bashrc && \ + # Also add banner for laradock user \ + cp /root/invoiceplane-banner.sh /home/laradock/invoiceplane-banner.sh && \ + chown laradock:laradock /home/laradock/invoiceplane-banner.sh && \ + chmod +x /home/laradock/invoiceplane-banner.sh && \ + touch /home/laradock/.bashrc && \ + chown laradock:laradock /home/laradock/.bashrc && \ + echo "" >> /home/laradock/.bashrc && \ + echo "# Set container type for banner" >> /home/laradock/.bashrc && \ + echo "export CONTAINER_TYPE='PHP Worker Container'" >> /home/laradock/.bashrc && \ + echo "# Load InvoicePlane Banner" >> /home/laradock/.bashrc && \ + echo "if [ -f ~/invoiceplane-banner.sh ]; then" >> /home/laradock/.bashrc && \ + echo " source ~/invoiceplane-banner.sh" >> /home/laradock/.bashrc && \ + echo "fi" >> /home/laradock/.bashrc ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"] diff --git a/.docker/redis/Dockerfile b/.docker/redis/Dockerfile index 09b677f..5a15cf9 100644 --- a/.docker/redis/Dockerfile +++ b/.docker/redis/Dockerfile @@ -1,5 +1,5 @@ FROM redis:alpine WORKDIR /redis -COPY redis.conf /usr/local/etc/redis/redis.conf -COPY init.sh ./ +COPY redis/redis.conf /usr/local/etc/redis/redis.conf +COPY redis/init.sh ./ RUN chmod +x init.sh diff --git a/.docker/workspace/Dockerfile b/.docker/workspace/Dockerfile index b7f3a88..55a79ad 100644 --- a/.docker/workspace/Dockerfile +++ b/.docker/workspace/Dockerfile @@ -107,10 +107,10 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone USER root -COPY ./aliases.sh /root/aliases.sh -COPY ./aliases.sh /home/ivpldock/aliases.sh -COPY ../invoiceplane-banner.sh /root/invoiceplane-banner.sh -COPY ../invoiceplane-banner.sh /home/ivpldock/invoiceplane-banner.sh +COPY workspace/aliases.sh /root/aliases.sh +COPY workspace/aliases.sh /home/ivpldock/aliases.sh +COPY invoiceplane-banner.sh /root/invoiceplane-banner.sh +COPY invoiceplane-banner.sh /home/ivpldock/invoiceplane-banner.sh RUN sed -i 's/\r//' /root/aliases.sh && \ sed -i 's/\r//' /home/ivpldock/aliases.sh && \ @@ -155,10 +155,10 @@ RUN echo "" >> ~/.bashrc && \ USER root # Add the composer.json -COPY ./composer.json /home/ivpldock/.composer/composer.json +COPY workspace/composer.json /home/ivpldock/.composer/composer.json # Add the auth.json for magento 2 credentials -COPY ./auth.json /home/ivpldock/.composer/auth.json +COPY workspace/auth.json /home/ivpldock/.composer/auth.json # Make sure that ~/.composer belongs to ivpldock RUN chown -R ivpldock:ivpldock /home/ivpldock/.composer @@ -220,7 +220,7 @@ RUN echo "" >> ~/.bashrc && \ USER root -COPY ./crontab /etc/cron.d +COPY workspace/crontab /etc/cron.d RUN chmod -R 644 /etc/cron.d @@ -329,7 +329,7 @@ RUN echo "##### PHP Version #####" \ "##### /PHP Version #####" # ADD for REMOTE debugging -COPY ./xdebug.ini /etc/php/${IVPLDOCK_PHP_VERSION}/cli/conf.d/xdebug.ini +COPY workspace/xdebug.ini /etc/php/${IVPLDOCK_PHP_VERSION}/cli/conf.d/xdebug.ini RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "8" ] || { [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && { [ $(php -r "echo PHP_MINOR_VERSION;") = "4" ] || [ $(php -r "echo PHP_MINOR_VERSION;") = "3" ] ;} ;}; then \ sed -i "s/xdebug.remote_host=/xdebug.client_host=/" /etc/php/${IVPLDOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ @@ -470,8 +470,8 @@ RUN find $NVM_DIR -type f -name node -exec ln -s {} /usr/local/bin/node \; && \ ln -s $NODE_MODS_DIR/npm/bin/npx-cli.js /usr/local/bin/npx # Mount .npmrc into home folder -COPY ./.npmrc /root/.npmrc -COPY ./.npmrc /home/${IVPLDOCK_USER}/.npmrc +COPY workspace/.npmrc /root/.npmrc +COPY workspace/.npmrc /home/${IVPLDOCK_USER}/.npmrc ########################################################################### # YARN: @@ -633,7 +633,7 @@ RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \ ARG INSTALL_GIT_PROMPT=false -COPY git-prompt.sh /tmp/git-prompt +COPY workspace/git-prompt.sh /tmp/git-prompt RUN if [ ${INSTALL_GIT_PROMPT} = true ]; then \ git clone https://github.com/magicmonty/bash-git-prompt.git /root/.bash-git-prompt --depth=1 && \ @@ -701,8 +701,8 @@ USER root USER root -COPY ./aliases.sh /root/aliases.sh -COPY ./aliases.sh /home/ivpldock/aliases.sh +COPY workspace/aliases.sh /root/aliases.sh +COPY workspace/aliases.sh /home/ivpldock/aliases.sh RUN if [ ${SHELL_OH_MY_ZSH} = true ]; then \ sed -i 's/\r//' /root/aliases.sh && \ diff --git a/docker-compose.yml b/docker-compose.yml index 6efa875..a5c302e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,7 +18,8 @@ services: ### Workspace Utilities ################################## workspace: build: - context: ./.docker/workspace + context: ./.docker + dockerfile: workspace/Dockerfile args: - CHANGE_SOURCE=${CHANGE_SOURCE} - SHELL_OH_MY_ZSH=${SHELL_OH_MY_ZSH} @@ -175,7 +176,8 @@ services: ### PHP-FPM ############################################## php-fpm: build: - context: ./.docker/php-fpm + context: ./.docker + dockerfile: php-fpm/Dockerfile args: - CHANGE_SOURCE=${CHANGE_SOURCE} - BASE_IMAGE_TAG_PREFIX=${PHP_FPM_BASE_IMAGE_TAG_PREFIX} @@ -288,7 +290,8 @@ services: ### PHP Worker ############################################ php-worker: build: - context: ./.docker/php-worker + context: ./.docker + dockerfile: php-worker/Dockerfile args: - CHANGE_SOURCE=${CHANGE_SOURCE} - IVPLDOCK_PHP_VERSION=${PHP_VERSION} @@ -346,7 +349,8 @@ services: ### NGINX Server ######################################### nginx: build: - context: ./.docker/nginx + context: ./.docker + dockerfile: nginx/Dockerfile args: - CHANGE_SOURCE=${CHANGE_SOURCE} - PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER} @@ -372,7 +376,8 @@ services: ### MariaDB ############################################## mariadb: build: - context: ./.docker/mariadb + context: ./.docker + dockerfile: mariadb/Dockerfile args: - http_proxy - https_proxy @@ -394,7 +399,9 @@ services: ### Redis ################################################ redis: - build: ./.docker/redis + build: + context: ./.docker + dockerfile: redis/Dockerfile volumes: - ${DATA_PATH_HOST}/redis:/data command: --requirepass ${REDIS_PASSWORD} @@ -405,7 +412,9 @@ services: ### Beanstalkd ########################################### beanstalkd: - build: ./.docker/beanstalkd + build: + context: ./.docker + dockerfile: beanstalkd/Dockerfile ports: - "${BEANSTALKD_HOST_PORT}:11300" privileged: true @@ -416,7 +425,9 @@ services: ### Beanstalkd Console ################################### beanstalkd-console: - build: ./.docker/beanstalkd-console + build: + context: ./.docker + dockerfile: beanstalkd-console/Dockerfile ports: - "${BEANSTALKD_CONSOLE_HOST_PORT}:2080" depends_on: @@ -426,7 +437,9 @@ services: ### phpMyAdmin ########################################### phpmyadmin: - build: ./.docker/phpmyadmin + build: + context: ./.docker + dockerfile: phpmyadmin/Dockerfile volumes: - ./.docker/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php - ./resources/databases:/var/www/html/tmp/ivpldock_databases @@ -449,7 +462,8 @@ services: ### REDISWEBUI ################################################ redis-webui: build: - context: ./.docker/redis-webui + context: ./.docker + dockerfile: redis-webui/Dockerfile environment: - ADMIN_USER=${REDIS_WEBUI_USERNAME} - ADMIN_PASS=${REDIS_WEBUI_PASSWORD} @@ -465,7 +479,9 @@ services: ### SWAGGER EDITOR ############################################ swagger-editor: - build: ./.docker/swagger-editor + build: + context: ./.docker + dockerfile: swagger-editor/Dockerfile ports: - ${SWAGGER_EDITOR_PORT}:8080 networks: @@ -473,7 +489,9 @@ services: ### SWAGGER UI ################################################ swagger-ui: - build: ./.docker/swagger-ui + build: + context: ./.docker + dockerfile: swagger-ui/Dockerfile environment: - API_URL=${SWAGGER_API_URL} ports: