mirror of
https://github.com/coollabsio/coolify.git
synced 2026-06-14 03:19:51 +00:00
0917bb7b8e
Pin nginx to the official nginx.org Alpine mainline package in development and production images so patched releases can be installed consistently.
102 lines
4.0 KiB
Docker
102 lines
4.0 KiB
Docker
# Versions
|
|
# https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm-nginx-alpine
|
|
ARG SERVERSIDEUP_PHP_VERSION=8.4-fpm-nginx-alpine
|
|
# https://github.com/minio/mc/releases
|
|
ARG MINIO_VERSION=RELEASE.2025-05-21T01-59-54Z
|
|
# https://github.com/cloudflare/cloudflared/releases
|
|
ARG CLOUDFLARED_VERSION=2025.7.0
|
|
# https://www.postgresql.org/support/versioning/
|
|
# Note: We are using version 18 of the postgres client (while still using postgres 15 for the postgres server) as version 15 has been removed from Alpine 3.23+ https://pkgs.alpinelinux.org/packages?name=postgresql*-client&branch=v3.23&repo=&arch=x86_64&origin=&flagged=&maintainer=
|
|
ARG POSTGRES_VERSION=18
|
|
# https://nginx.org/en/linux_packages.html
|
|
ARG NGINX_VERSION=1.31.0-r1
|
|
|
|
# =================================================================
|
|
# Get MinIO client
|
|
# =================================================================
|
|
FROM minio/mc:${MINIO_VERSION} AS minio-client
|
|
|
|
# =================================================================
|
|
# Final Stage: Production image
|
|
# =================================================================
|
|
FROM serversideup/php:${SERVERSIDEUP_PHP_VERSION}
|
|
|
|
ARG USER_ID
|
|
ARG GROUP_ID
|
|
ARG TARGETPLATFORM
|
|
ARG POSTGRES_VERSION
|
|
ARG CLOUDFLARED_VERSION
|
|
ARG NGINX_VERSION
|
|
|
|
WORKDIR /var/www/html
|
|
|
|
USER root
|
|
|
|
# Install patched Nginx from the official nginx.org Alpine repository
|
|
RUN set -eux; \
|
|
apk add --no-cache ca-certificates curl; \
|
|
NGINX_ALPINE_VERSION="$(egrep -o '^[0-9]+\.[0-9]+' /etc/alpine-release)"; \
|
|
NGINX_REPOSITORY="https://nginx.org/packages/mainline/alpine/v${NGINX_ALPINE_VERSION}/main"; \
|
|
sed -i 's|http://nginx.org/packages|https://nginx.org/packages|g' /etc/apk/repositories; \
|
|
grep -qxF "@nginx ${NGINX_REPOSITORY}" /etc/apk/repositories || echo "@nginx ${NGINX_REPOSITORY}" >> /etc/apk/repositories; \
|
|
curl -fsSL https://nginx.org/keys/nginx_signing.rsa.pub -o /etc/apk/keys/nginx_signing.rsa.pub; \
|
|
apk add --no-cache --upgrade "nginx@nginx=${NGINX_VERSION}"; \
|
|
nginx -v
|
|
|
|
RUN docker-php-serversideup-set-id www-data $USER_ID:$GROUP_ID && \
|
|
docker-php-serversideup-set-file-permissions --owner $USER_ID:$GROUP_ID --service nginx
|
|
|
|
# Install PostgreSQL repository and keys
|
|
RUN apk upgrade --no-cache && \
|
|
apk add --no-cache gnupg && \
|
|
mkdir -p /usr/share/keyrings && \
|
|
curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor > /usr/share/keyrings/postgresql.gpg
|
|
|
|
|
|
# Install system dependencies
|
|
RUN apk add --no-cache \
|
|
postgresql${POSTGRES_VERSION}-client \
|
|
openssh-client \
|
|
git \
|
|
git-lfs \
|
|
jq \
|
|
lsof \
|
|
vim
|
|
|
|
# Install PHP extensions
|
|
RUN install-php-extensions sockets
|
|
|
|
# Configure shell aliases
|
|
RUN echo "alias ll='ls -al'" >> /etc/profile && \
|
|
echo "alias a='php artisan'" >> /etc/profile && \
|
|
echo "alias logs='tail -f storage/logs/laravel.log'" >> /etc/profile
|
|
|
|
# Install Cloudflared based on architecture
|
|
RUN mkdir -p /usr/local/bin && \
|
|
if [ "${TARGETPLATFORM}" = "linux/amd64" ]; then \
|
|
curl -sSL "https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-amd64" -o /usr/local/bin/cloudflared; \
|
|
elif [ "${TARGETPLATFORM}" = "linux/arm64" ]; then \
|
|
curl -sSL "https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-arm64" -o /usr/local/bin/cloudflared; \
|
|
fi && \
|
|
chmod +x /usr/local/bin/cloudflared
|
|
|
|
# Configure PHP
|
|
COPY docker/development/etc/php/conf.d/zzz-custom-php.ini /usr/local/etc/php/conf.d/zzz-custom-php.ini
|
|
ENV PHP_OPCACHE_ENABLE=0
|
|
|
|
# Configure Nginx and S6 overlay
|
|
COPY docker/development/etc/nginx/conf.d/custom.conf /etc/nginx/conf.d/custom.conf
|
|
COPY docker/development/etc/nginx/site-opts.d/http.conf /etc/nginx/site-opts.d/http.conf
|
|
COPY --chmod=755 docker/development/etc/s6-overlay/ /etc/s6-overlay/
|
|
|
|
RUN mkdir -p /etc/nginx/conf.d && \
|
|
chown -R www-data:www-data /etc/nginx && \
|
|
chmod -R 755 /etc/nginx
|
|
|
|
# Install MinIO client
|
|
COPY --from=minio-client /usr/bin/mc /usr/bin/mc
|
|
RUN chmod +x /usr/bin/mc
|
|
|
|
# Switch to non-root user
|
|
USER www-data
|