From 5ea12f5342637fd6d6a3ac11613d73e98561440c Mon Sep 17 00:00:00 2001 From: Jeppe Bundgaard Date: Wed, 20 May 2026 15:27:20 +0200 Subject: [PATCH] Add Coolify API deployment image --- Dockerfile.coolify-api | 73 +++++++++++++++++++++++++++++++++ services/coolify/api/nginx.conf | 42 +++++++++++++++++++ services/coolify/api/start.sh | 6 +++ 3 files changed, 121 insertions(+) create mode 100644 Dockerfile.coolify-api create mode 100644 services/coolify/api/nginx.conf create mode 100644 services/coolify/api/start.sh diff --git a/Dockerfile.coolify-api b/Dockerfile.coolify-api new file mode 100644 index 00000000..e768acf4 --- /dev/null +++ b/Dockerfile.coolify-api @@ -0,0 +1,73 @@ +FROM php:8.2.15-fpm + +WORKDIR /var/www/html + +COPY --from=composer:2.6 /usr/bin/composer /usr/bin/composer + +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + $PHPIZE_DEPS \ + ca-certificates \ + curl \ + default-mysql-client \ + git \ + imagemagick \ + libfreetype6-dev \ + libjpeg62-turbo-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libonig-dev \ + libpng-dev \ + libssl-dev \ + libxml2-dev \ + libzip-dev \ + mariadb-client \ + nginx \ + pkg-config \ + redis-tools \ + unzip \ + zip; \ + update-ca-certificates; \ + docker-php-ext-configure gd --with-freetype --with-jpeg; \ + docker-php-ext-install -j"$(nproc)" \ + bcmath \ + exif \ + gd \ + mbstring \ + mysqli \ + pcntl \ + pdo_mysql \ + sockets \ + zip; \ + pecl install imagick-3.7.0 redis; \ + docker-php-ext-enable imagick redis; \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $PHPIZE_DEPS; \ + rm -rf /var/lib/apt/lists/* + +COPY services/nginx/app/ /var/www/html/ +COPY services/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh +COPY services/coolify/api/nginx.conf /etc/nginx/nginx.conf +COPY services/coolify/api/start.sh /usr/local/bin/coolify-api-start + +RUN set -eux; \ + sed -i 's/\r$//' /usr/local/bin/docker-entrypoint.sh /usr/local/bin/coolify-api-start; \ + chmod +x /usr/local/bin/docker-entrypoint.sh /usr/local/bin/coolify-api-start; \ + COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --prefer-dist --optimize-autoloader --no-interaction -d /var/www/html; \ + if [ -f /var/www/html/modules/washcertificates/composer.json ]; then \ + COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --prefer-dist --optimize-autoloader --no-interaction -d /var/www/html/modules/washcertificates; \ + fi; \ + COMPOSER_ALLOW_SUPERUSER=1 composer dump-autoload --no-dev --optimize --no-interaction -d /var/www/html; \ + php -d display_errors=1 -r 'require "/var/www/html/vendor/autoload.php"; exit(interface_exists("Psr\\Http\\Message\\UriInterface") && interface_exists("Psr\\Http\\Message\\StreamInterface") ? 0 : 1);'; \ + chown -R www-data:www-data /var/www/html; \ + chmod -R 755 /var/www/html + +ENV APP_DIR=/var/www/html \ + MODULE_DIR=/var/www/html/modules/washcertificates \ + AUTO_COMPOSER_INSTALL=false \ + COMPOSER_ALLOW_SUPERUSER=1 + +EXPOSE 80 + +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] +CMD ["coolify-api-start"] diff --git a/services/coolify/api/nginx.conf b/services/coolify/api/nginx.conf new file mode 100644 index 00000000..a7bdc1a4 --- /dev/null +++ b/services/coolify/api/nginx.conf @@ -0,0 +1,42 @@ +worker_processes auto; +pid /run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + access_log /dev/stdout; + error_log /dev/stderr warn; + + sendfile on; + keepalive_timeout 65; + client_max_body_size 64m; + + gzip on; + gzip_types application/json application/javascript application/xml text/css text/plain; + + server { + listen 80 default_server; + server_name _; + root /var/www/html; + index index.php; + + location / { + include fastcgi_params; + fastcgi_pass 127.0.0.1:9000; + fastcgi_index index.php; + fastcgi_read_timeout 60s; + fastcgi_param SCRIPT_FILENAME $document_root/index.php; + fastcgi_param SCRIPT_NAME /index.php; + fastcgi_param X_REQUEST_ID $http_x_request_id; + } + + location ~ /\.(?!well-known) { + deny all; + } + } +} diff --git a/services/coolify/api/start.sh b/services/coolify/api/start.sh new file mode 100644 index 00000000..6a364078 --- /dev/null +++ b/services/coolify/api/start.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -e + +mkdir -p /run/nginx +php-fpm -D +exec nginx -g "daemon off;"