From 3ac3fde2c654bd4e589a378cba38f2a58958b203 Mon Sep 17 00:00:00 2001 From: Jaiden Date: Sat, 24 May 2025 01:44:09 -0400 Subject: [PATCH] Update docker config and add example compose file --- .dockerignore | 22 ++++++++++++ Dockerfile | 36 ------------------- deploy/Dockerfile | 28 +++++++++++++++ deploy/docker-compose.yml | 75 +++++++++++++++++++++++++++++++++++++++ docker-entrypoint.sh | 17 --------- 5 files changed, 125 insertions(+), 53 deletions(-) create mode 100644 .dockerignore delete mode 100644 Dockerfile create mode 100644 deploy/Dockerfile create mode 100644 deploy/docker-compose.yml delete mode 100644 docker-entrypoint.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..fc6c548 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,22 @@ +/deploy/docker-compose.yml +/deploy/Dockerfile +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/storage +/public/bucket +/storage/*.key +/vendor +.env +.env.example +.env.backup +.env.production +.phpunit.result.cache +auth.json +npm-debug.log +yarn-error.log +/.fleet +/.idea +/.vscode +.git diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 3b2a0eb..0000000 --- a/Dockerfile +++ /dev/null @@ -1,36 +0,0 @@ -FROM php:8.4-fpm -WORKDIR /var/www/html - -RUN apt-get update && apt-get install -y \ - git \ - curl \ - libpng-dev \ - libonig-dev \ - libxml2-dev \ - libgmp-dev \ - zip \ - unzip \ - libzip-dev \ - nodejs \ - npm \ - netcat-traditional - -RUN apt-get clean && rm -rf /var/lib/apt/lists/* -RUN docker-php-ext-install mbstring exif pcntl bcmath gd zip gmp -RUN pecl install mongodb && docker-php-ext-enable mongodb - -RUN git config --global --add safe.directory /var/www/html -COPY --from=composer:latest /usr/bin/composer /usr/bin/composer - -COPY docker-entrypoint.sh /usr/local/bin/ -RUN chmod +x /usr/local/bin/docker-entrypoint.sh - -COPY . /var/www/html -COPY .env.example /var/www/html/.env - -RUN composer install --optimize-autoloader --no-dev -RUN npm install && npm run build - -EXPOSE 9000 -ENTRYPOINT ["docker-entrypoint.sh"] -CMD ["php-fpm"] diff --git a/deploy/Dockerfile b/deploy/Dockerfile new file mode 100644 index 0000000..5ed4055 --- /dev/null +++ b/deploy/Dockerfile @@ -0,0 +1,28 @@ +# Stage 1: Build +FROM joseluisq/php-fpm:8.4 AS build + +RUN apk add --no-cache nodejs npm + +WORKDIR /var/www/html +COPY --chown=www-data:www-data . . + +RUN chmod -R 775 /var/www/html/storage \ + && chmod -R 775 /var/www/html/bootstrap/cache + +RUN composer install --no-dev --prefer-dist \ + && npm install \ + && npm run build + +RUN chown -R www-data:www-data /var/www/html/vendor \ + && chmod -R 775 /var/www/html/vendor + +# Stage 2: Deploy +FROM joseluisq/php-fpm:8.4 + +COPY --from=build /var/www/html /var/www/html +WORKDIR /var/www/html + +VOLUME ["/var/www/html/storage/app"] + +EXPOSE 9000 +CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=9000", "--tries=1"] diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml new file mode 100644 index 0000000..e8b6b18 --- /dev/null +++ b/deploy/docker-compose.yml @@ -0,0 +1,75 @@ +services: + + nyaabooru: + restart: unless-stopped + container_name: nyaabooru + build: + context: ../ + dockerfile: ./deploy/Dockerfile + volumes: + - ../storage/app:/var/www/html/storage/app + environment: + APP_NAME: ${APP_NAME} + APP_ENV: ${APP_ENV} + APP_DEBUG: ${APP_DEBUG} + APP_KEY: ${APP_KEY} + APP_URL: ${APP_URL} + DB_CONNECTION: ${DB_CONNECTION} + DB_HOST: ${DB_HOST} + DB_NAME: ${DB_NAME} + AUTHENTIK_BASE_URL: ${AUTHENTIK_BASE_URL} + AUTHENTIK_CLIENT_ID: ${AUTHENTIK_CLIENT_ID} + AUTHENTIK_CLIENT_SECRET: ${AUTHENTIK_CLIENT_SECRET} + AUTHENTIK_REDIRECT_URI: ${APP_URL}/auth/callback + SESSION_DRIVER: ${SESSION_DRIVER} + FILESYSTEM_DISK: ${FILESYSTEM_DISK} + CACHE_STORE: ${CACHE_STORE} + REDIS_CLIENT: ${REDIS_CLIENT} + REDIS_HOST: ${REDIS_HOST} + MAIL_MAILER: ${MAIL_MAILER} + MAIL_SCHEME: ${MAIL_SCHEME} + MAIL_HOST: ${MAIL_HOST} + MAIL_PORT: ${MAIL_PORT} + MAIL_USERNAME: ${MAIL_USERNAME} + MAIL_PASSWORD: ${MAIL_PASSWORD} + MAIL_FROM_ADDRESS: ${MAIL_FROM_ADDRESS} + MAIL_FROM_NAME: ${MAIL_FROM_NAME} + ports: + - "9000:9000" + networks: + - nyaabooru-internal + depends_on: + - db + - redis + + db: + image: mongo:latest + restart: unless-stopped + volumes: + - db_data:/data + networks: + - nyaabooru-internal + + redis: + image: redis:alpine + restart: unless-stopped + command: --save 60 1 --loglevel warning + healthcheck: + test: ["CMD-SHELL", "redis-cli ping | grep PONG"] + start_period: 20s + interval: 30s + retries: 5 + timeout: 3s + volumes: + - redis_data:/data + networks: + - nyaabooru-internal + +volumes: + db_data: + redis_data: + +networks: + nyaabooru-internal: + name: nyaabooru-internal + driver: bridge diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh deleted file mode 100644 index 0f8d23a..0000000 --- a/docker-entrypoint.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -set -e - -mkdir -p /var/www/html/storage/framework/cache -mkdir -p /var/www/html/storage/framework/sessions -mkdir -p /var/www/html/storage/framework/views -mkdir -p /var/www/html/storage/app/public -mkdir -p /var/www/html/bootstrap/cache - -chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache -chown -R 775 /var/www/html/storage /var/www/html/bootstrap/cache - -if [ "$DB_HOST" != "" ]; then - php artisan migrate -fi - -exec "$@"