From 43c37e97201ce1f3e23ab526ee0240bffdd579f6 Mon Sep 17 00:00:00 2001 From: Stefan Pejcic Date: Tue, 12 Nov 2024 19:36:25 +0100 Subject: [PATCH] Create Dockerfile --- services/proxy/Dockerfile | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 services/proxy/Dockerfile diff --git a/services/proxy/Dockerfile b/services/proxy/Dockerfile new file mode 100644 index 00000000..9a5b759a --- /dev/null +++ b/services/proxy/Dockerfile @@ -0,0 +1,47 @@ +# Use a base image for Rocky Linux +FROM rockylinux:9.4 + +# Environment variables +ENV DOMAIN openpanel.org +ENV PREVIEW_DOMAIN preview.openpanel.org + +# Update system and install necessary tools +RUN dnf update -y && \ + dnf install -y 'dnf-command(copr)' && \ + dnf copr enable @caddy/caddy -y && \ + dnf install -y caddy php php-fpm php-cli php-common + +# Copy files +COPY html /var/www/html +COPY delete_cron.sh /var/www/delete_cron.sh +COPY caddy/fullchain.pem /etc/caddy/certs/fullchain.pem +COPY caddy/privkey.pem /etc/caddy/certs/privkey.pem +COPY caddy/Caddyfile /etc/caddy/Caddyfile + +# order is important! +RUN find /var/www/html -type f -exec sed -i "s/preview.openpanel.org/$PREVIEW_DOMAIN/g" {} + && \ + find /etc/caddy/Caddyfile -type f -exec sed -i "s/preview.openpanel.org/$PREVIEW_DOMAIN/g" {} + && \ + find /var/www/html -type f -exec sed -i "s/openpanel.org/$DOMAIN/g" {} + && \ + find /etc/caddy/Caddyfile -type f -exec sed -i "s/openpanel.org/$DOMAIN/g" {} + + +# Set up permissions +RUN chown -R caddy:caddy /var/www/html && \ + chmod -R 755 /var/www/html/domains && \ + chmod +x /var/www/delete_cron.sh && \ + usermod -aG www-data caddy && \ + usermod -aG caddy caddy && \ + chown caddy:caddy /run/php-fpm/www.sock && \ + sed -i 's/^user = .*/user = caddy/' /etc/php-fpm.d/www.conf && \ + sed -i 's/^group = .*/group = caddy/' /etc/php-fpm.d/www.conf + +# Enable and start services +RUN systemctl enable caddy && systemctl enable php-fpm + +# Cron setup +RUN echo "*/5 * * * * bash /var/www/delete_cron.sh" | crontab - + +# Expose necessary ports for Caddy +EXPOSE 80 443 + +# Run services +CMD ["sh", "-c", "php-fpm && caddy run --config /etc/caddy/Caddyfile --adapter caddyfile"]