mirror of
https://github.com/pelican-dev/panel.git
synced 2025-05-19 22:14:45 +02:00

Starting the docker container is hampered due to setting `chown -R www-data:www-data /var/www/html/` on every start, causing it to traverse the entire directory which in our use case is very slow. This PR instead changes it to set permissions as part of the build process. Sidenote: Is `LE_EMAIL` supposed to be used in addition to `ADMIN_EMAIL`?
60 lines
1.6 KiB
Docker
60 lines
1.6 KiB
Docker
# Pelican Production Dockerfile
|
|
|
|
FROM node:20-alpine AS yarn
|
|
#FROM --platform=$TARGETOS/$TARGETARCH node:20-alpine AS yarn
|
|
|
|
WORKDIR /build
|
|
|
|
COPY . ./
|
|
|
|
RUN yarn config set network-timeout 300000 \
|
|
&& yarn install --frozen-lockfile \
|
|
&& yarn run build:production
|
|
|
|
FROM php:8.3-fpm-alpine
|
|
# FROM --platform=$TARGETOS/$TARGETARCH php:8.3-fpm-alpine
|
|
|
|
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
|
|
|
|
WORKDIR /var/www/html
|
|
|
|
# Install dependencies
|
|
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 pdo_mysql
|
|
|
|
# Copy the Caddyfile to the container
|
|
COPY Caddyfile /etc/caddy/Caddyfile
|
|
|
|
# Copy the application code to the container
|
|
COPY . .
|
|
|
|
COPY --from=yarn /build/public/assets ./public/assets
|
|
|
|
RUN touch .env
|
|
|
|
RUN composer install --no-dev --optimize-autoloader
|
|
|
|
# Set file permissions
|
|
RUN chmod -R 755 storage bootstrap/cache \
|
|
&& chown -R www-data:www-data ./
|
|
|
|
# Add scheduler to cron
|
|
RUN echo "* * * * * php /var/www/html/artisan schedule:run >> /dev/null 2>&1" | crontab -u www-data -
|
|
|
|
## supervisord config and log dir
|
|
RUN cp .github/docker/supervisord.conf /etc/supervisord.conf && \
|
|
mkdir /var/log/supervisord/
|
|
|
|
HEALTHCHECK --interval=5m --timeout=10s --start-period=5s --retries=3 \
|
|
CMD curl -f http://localhost/up || exit 1
|
|
|
|
EXPOSE 80 443
|
|
|
|
VOLUME /pelican-data
|
|
|
|
ENTRYPOINT [ "/bin/ash", ".github/docker/entrypoint.sh" ]
|
|
CMD [ "supervisord", "-n", "-c", "/etc/supervisord.conf" ]
|