diff --git a/.env.docker b/.env.docker index 58f5da060..91aac2b04 100644 --- a/.env.docker +++ b/.env.docker @@ -1,3 +1,3 @@ APP_KEY= -DB_DATABASE=docker/database.sqlite +DB_DATABASE=database.sqlite diff --git a/.github/docker/entrypoint.sh b/.github/docker/entrypoint.sh index d3b891de6..20fe6b8c6 100644 --- a/.github/docker/entrypoint.sh +++ b/.github/docker/entrypoint.sh @@ -2,40 +2,12 @@ #mkdir -p /var/log/supervisord/ /var/log/php8/ \ -## check for .env file and generate app keys if missing -if [ -f /pelican-data/.env ]; then - echo "external vars exist." - rm -rf /var/www/html/.env -else - echo "external vars don't exist." - rm -rf /var/www/html/.env - touch /pelican-data/.env - - ## manually generate a key because key generate --force fails - if [ -z $APP_KEY ]; then - echo -e "Generating key." - APP_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) - echo -e "Generated app key: $APP_KEY" - echo -e "APP_KEY=$APP_KEY" > /pelican-data/.env - else - echo -e "APP_KEY exists in environment, using that." - echo -e "APP_KEY=$APP_KEY" > /pelican-data/.env - fi -fi - -ln -s /pelican-data/.env /var/www/html/ - -touch /pelican-data/database.sqlite - -if ! grep -q "APP_KEY=" .env || grep -q "APP_KEY=$" .env; then - echo "Generating APP_KEY..." - php artisan key:generate --force -else - echo "APP_KEY is already set." -fi +## Make sure the app key is set +php artisan key:generate ## make sure the db is set up echo -e "Migrating and Seeding Database" +touch database/database.sqlite php artisan migrate --force ## start cronjobs for the queue diff --git a/Caddyfile b/Caddyfile index 1c835bf05..f3b65899f 100644 --- a/Caddyfile +++ b/Caddyfile @@ -3,9 +3,8 @@ } {$APP_URL} { - root * /var/www/html/public + root * /srv/public encode gzip - - php_fastcgi 127.0.0.1:9000 + php_fastcgi panel:9000 file_server } diff --git a/Dockerfile b/Dockerfile index 57d388812..31e840f07 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,11 +20,10 @@ WORKDIR /var/www/html RUN apk update && apk add --no-cache \ libpng-dev libjpeg-turbo-dev freetype-dev libzip-dev icu-dev \ zip unzip curl \ - caddy ca-certificates supervisor \ - && docker-php-ext-install bcmath gd intl zip opcache pcntl posix + ca-certificates supervisor -# Copy the Caddyfile to the container -COPY Caddyfile /etc/caddy/Caddyfile +# Additional PHP Extensions +RUN docker-php-ext-install bcmath gd intl zip opcache pcntl posix # Copy the application code to the container COPY . . @@ -44,13 +43,10 @@ RUN chmod -R 755 /var/www/html/storage \ HEALTHCHECK --interval=5m --timeout=10s --start-period=5s --retries=3 \ CMD curl -f http://localhost/up || exit 1 -EXPOSE 80:2019 -EXPOSE 443 - VOLUME /pelican-data # Start PHP-FPM -CMD ["sh", "-c", "php-fpm & caddy run --config /etc/caddy/Caddyfile --adapter caddyfile"] +CMD ["sh", "-c", "php-fpm"] ENTRYPOINT [ "/bin/ash", ".github/docker/entrypoint.sh" ] # CMD [ "supervisord", "-n", "-c", "/etc/supervisord.conf" ] diff --git a/compose.yml b/compose.yml index c4737d755..38e48035a 100644 --- a/compose.yml +++ b/compose.yml @@ -30,22 +30,47 @@ x-common: services: panel: image: panel - restart: always - ports: - - "80:2019" - - "443:443" + restart: unless-stopped extra_hosts: - "host.docker.internal:host-gateway" volumes: - pelican-data:/pelican-data - - pelican-logs:/var/www/html/storage/logs + - .:/srv environment: <<: [*panel-environment, *mail-environment] + working_dir: /srv + + caddy: + image: caddy:2-alpine + restart: unless-stopped + volumes: + - ./Caddyfile:/etc/caddy/Caddyfile + - caddy-data:/data + - caddy-config:/config + - .:/srv + ports: + - 80:80 + - 443:443 + env_file: + - ./.env.docker + environment: + <<: [ *panel-environment, *mail-environment ] XDG_DATA_HOME: /pelican-data + logging: + driver: "json-file" + options: + max-size: "1M" + max-file: "10" + command: + - /bin/sh + - -c + - | + caddy run --config /etc/caddy/Caddyfile --adapter caddyfile volumes: pelican-data: - pelican-logs: + caddy-data: + caddy-config: networks: default: