development should work now
This commit is contained in:
@@ -47,7 +47,7 @@ jobs:
|
|||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: docker/prod/Dockerfile
|
file: docker/production/Dockerfile
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
@@ -82,7 +82,7 @@ jobs:
|
|||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: docker/prod/Dockerfile
|
file: docker/production/Dockerfile
|
||||||
platforms: linux/aarch64
|
platforms: linux/aarch64
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
|
4
.github/workflows/coolify-staging-build.yml
vendored
4
.github/workflows/coolify-staging-build.yml
vendored
@@ -42,7 +42,7 @@ jobs:
|
|||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: docker/prod/Dockerfile
|
file: docker/production/Dockerfile
|
||||||
platforms: linux/amd64
|
platforms: linux/amd64
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
@@ -75,7 +75,7 @@ jobs:
|
|||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: docker/prod/Dockerfile
|
file: docker/production/Dockerfile
|
||||||
platforms: linux/aarch64
|
platforms: linux/aarch64
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
|
@@ -2,15 +2,14 @@ services:
|
|||||||
coolify:
|
coolify:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: ./docker/dev/Dockerfile
|
dockerfile: ./docker/development/Dockerfile
|
||||||
|
args:
|
||||||
|
- USER_ID=${USERID:-1000}
|
||||||
|
- GROUP_ID=${GROUPID:-1000}
|
||||||
ports:
|
ports:
|
||||||
- "${APP_PORT:-8000}:80"
|
- "${APP_PORT:-8000}:80"
|
||||||
environment:
|
environment:
|
||||||
PUID: "${USERID:-1000}"
|
AUTORUN_ENABLED: false
|
||||||
PGID: "${GROUPID:-1000}"
|
|
||||||
SSL_MODE: "off"
|
|
||||||
AUTORUN_LARAVEL_STORAGE_LINK: "false"
|
|
||||||
AUTORUN_LARAVEL_MIGRATION: "false"
|
|
||||||
PUSHER_HOST: "${PUSHER_HOST}"
|
PUSHER_HOST: "${PUSHER_HOST}"
|
||||||
PUSHER_PORT: "${PUSHER_PORT}"
|
PUSHER_PORT: "${PUSHER_PORT}"
|
||||||
PUSHER_SCHEME: "${PUSHER_SCHEME:-http}"
|
PUSHER_SCHEME: "${PUSHER_SCHEME:-http}"
|
||||||
|
@@ -1,61 +0,0 @@
|
|||||||
# Versions
|
|
||||||
# https://hub.docker.com/r/serversideup/php/tags?name=8.3-fpm-nginx-alpine
|
|
||||||
ARG SERVERSIDEUP_PHP_VERSION=8.2-fpm-nginx-v2.2.1
|
|
||||||
# https://github.com/minio/mc/releases
|
|
||||||
ARG MINIO_VERSION=RELEASE.2024-11-05T11-29-45Z
|
|
||||||
# https://github.com/cloudflare/cloudflared/releases
|
|
||||||
ARG CLOUDFLARED_VERSION=2024.11.0
|
|
||||||
# https://www.postgresql.org/support/versioning/ - Can not updated automatically so keep it at 15
|
|
||||||
ARG POSTGRES_VERSION=15
|
|
||||||
|
|
||||||
FROM minio/mc:${MINIO_VERSION} AS minio-client
|
|
||||||
|
|
||||||
FROM serversideup/php:${SERVERSIDEUP_PHP_VERSION}
|
|
||||||
|
|
||||||
ARG TARGETPLATFORM
|
|
||||||
ARG CLOUDFLARED_VERSION
|
|
||||||
ARG MINIO_VERSION
|
|
||||||
ARG POSTGRES_VERSION
|
|
||||||
|
|
||||||
# Use build arguments for caching
|
|
||||||
ARG BUILDTIME_DEPS="dirmngr ca-certificates software-properties-common gnupg gnupg2 apt-transport-https curl"
|
|
||||||
ARG RUNTIME_DEPS="postgresql-client-$POSTGRES_VERSION php8.2-pgsql openssh-client git git-lfs jq lsof"
|
|
||||||
|
|
||||||
# Install dependencies
|
|
||||||
RUN --mount=type=cache,target=/var/cache/apt \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y $BUILDTIME_DEPS && \
|
|
||||||
curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /usr/share/keyrings/postgresql.gpg > /dev/null && \
|
|
||||||
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ jammy-pgdg main | tee -a /etc/apt/sources.list.d/postgresql.list && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y $RUNTIME_DEPS && \
|
|
||||||
apt-get -y autoremove && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
|
|
||||||
|
|
||||||
COPY --chmod=755 docker/dev/etc/s6-overlay/ /etc/s6-overlay/
|
|
||||||
|
|
||||||
COPY docker/dev/nginx.conf /etc/nginx/conf.d/custom.conf
|
|
||||||
|
|
||||||
RUN echo "alias ll='ls -al'" >>/etc/bash.bashrc && \
|
|
||||||
echo "alias a='php artisan'" >>/etc/bash.bashrc
|
|
||||||
|
|
||||||
RUN mkdir -p /usr/local/bin
|
|
||||||
|
|
||||||
RUN --mount=type=cache,target=/root/.cache \
|
|
||||||
/bin/bash -c "if [[ ${TARGETPLATFORM} == 'linux/amd64' ]]; then \
|
|
||||||
echo 'amd64' && \
|
|
||||||
curl -sSL https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared && chmod +x /usr/local/bin/cloudflared \
|
|
||||||
;fi"
|
|
||||||
|
|
||||||
RUN --mount=type=cache,target=/root/.cache \
|
|
||||||
/bin/bash -c "if [[ ${TARGETPLATFORM} == 'linux/arm64' ]]; then \
|
|
||||||
echo 'arm64' && \
|
|
||||||
curl -L https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-arm64 -o /usr/local/bin/cloudflared && chmod +x /usr/local/bin/cloudflared \
|
|
||||||
;fi"
|
|
||||||
|
|
||||||
COPY --from=minio-client /usr/bin/mc /usr/bin/mc
|
|
||||||
RUN chmod +x /usr/bin/mc
|
|
||||||
|
|
||||||
RUN { \
|
|
||||||
echo 'upload_max_filesize=256M'; \
|
|
||||||
echo 'post_max_size=256M'; \
|
|
||||||
} > /etc/php/current_version/cli/conf.d/upload-limits.ini
|
|
@@ -1,5 +0,0 @@
|
|||||||
#!/command/execlineb -P
|
|
||||||
foreground {
|
|
||||||
s6-sleep 5
|
|
||||||
su - webuser -c "php /var/www/html/artisan start:horizon"
|
|
||||||
}
|
|
@@ -1,5 +0,0 @@
|
|||||||
#!/command/execlineb -P
|
|
||||||
foreground {
|
|
||||||
s6-sleep 5
|
|
||||||
su - webuser -c "php /var/www/html/artisan start:scheduler"
|
|
||||||
}
|
|
106
docker/development/Dockerfile
Normal file
106
docker/development/Dockerfile
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
# 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.2024-11-05T11-29-45Z
|
||||||
|
# https://github.com/cloudflare/cloudflared/releases
|
||||||
|
ARG CLOUDFLARED_VERSION=2024.11.0
|
||||||
|
# https://www.postgresql.org/support/versioning/ - Upgraded to 16 if the we have a manual upgrade guide?
|
||||||
|
ARG POSTGRES_VERSION=15
|
||||||
|
|
||||||
|
# Add user/group
|
||||||
|
ARG USER_ID=1000
|
||||||
|
ARG GROUP_ID=1000
|
||||||
|
|
||||||
|
# =================================================================
|
||||||
|
# Stage 1: Composer dependencies
|
||||||
|
# =================================================================
|
||||||
|
FROM serversideup/php:${SERVERSIDEUP_PHP_VERSION} AS base
|
||||||
|
|
||||||
|
USER root
|
||||||
|
|
||||||
|
ARG USER_ID
|
||||||
|
ARG GROUP_ID
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
WORKDIR /var/www/html
|
||||||
|
COPY --chown=www-data:www-data composer.json composer.lock ./
|
||||||
|
RUN composer install --no-dev --no-interaction --no-plugins --no-scripts --prefer-dist
|
||||||
|
|
||||||
|
USER www-data
|
||||||
|
|
||||||
|
# =================================================================
|
||||||
|
# Stage 2: 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 CI=true
|
||||||
|
|
||||||
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
|
USER root
|
||||||
|
|
||||||
|
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 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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
RUN echo 'upload_max_filesize=256M' > /usr/local/etc/php/conf.d/upload-limits.ini && \
|
||||||
|
echo 'post_max_size=256M' >> /usr/local/etc/php/conf.d/upload-limits.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
|
45
docker/development/etc/nginx/site-opts.d/http.conf
Normal file
45
docker/development/etc/nginx/site-opts.d/http.conf
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
listen 80 default_server;
|
||||||
|
listen [::]:80 default_server;
|
||||||
|
listen 8080 default_server;
|
||||||
|
listen [::]:8080 default_server;
|
||||||
|
|
||||||
|
root /var/www/html/public;
|
||||||
|
|
||||||
|
# Set allowed "index" files
|
||||||
|
index index.html index.htm index.php;
|
||||||
|
|
||||||
|
server_name _;
|
||||||
|
|
||||||
|
charset utf-8;
|
||||||
|
|
||||||
|
# Set max upload to 2048M
|
||||||
|
client_max_body_size 2048M;
|
||||||
|
|
||||||
|
# Healthchecks: Set /healthcheck to be the healthcheck URL
|
||||||
|
location /healthcheck {
|
||||||
|
access_log off;
|
||||||
|
|
||||||
|
# set max 5 seconds for healthcheck
|
||||||
|
fastcgi_read_timeout 5s;
|
||||||
|
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_NAME /healthcheck;
|
||||||
|
fastcgi_param SCRIPT_FILENAME /healthcheck;
|
||||||
|
fastcgi_pass 127.0.0.1:9000;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Have NGINX try searching for PHP files as well
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php?$query_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Pass "*.php" files to PHP-FPM
|
||||||
|
location ~ \.php$ {
|
||||||
|
fastcgi_pass 127.0.0.1:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_buffers 8 8k;
|
||||||
|
fastcgi_buffer_size 8k;
|
||||||
|
fastcgi_read_timeout 99;
|
||||||
|
}
|
5
docker/development/etc/s6-overlay/s6-rc.d/horizon/run
Normal file
5
docker/development/etc/s6-overlay/s6-rc.d/horizon/run
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/command/execlineb -P
|
||||||
|
foreground {
|
||||||
|
s6-sleep 5
|
||||||
|
php /var/www/html/artisan start:horizon
|
||||||
|
}
|
@@ -0,0 +1,5 @@
|
|||||||
|
#!/command/execlineb -P
|
||||||
|
foreground {
|
||||||
|
s6-sleep 5
|
||||||
|
php /var/www/html/artisan start:scheduler
|
||||||
|
}
|
@@ -1,5 +0,0 @@
|
|||||||
#!/command/execlineb -P
|
|
||||||
foreground {
|
|
||||||
s6-sleep 5
|
|
||||||
su - webuser -c "php /var/www/html/artisan start:horizon"
|
|
||||||
}
|
|
@@ -1,5 +0,0 @@
|
|||||||
#!/command/execlineb -P
|
|
||||||
foreground {
|
|
||||||
s6-sleep 5
|
|
||||||
su - webuser -c "php /var/www/html/artisan start:scheduler"
|
|
||||||
}
|
|
@@ -6,7 +6,7 @@ ARG MINIO_VERSION=RELEASE.2024-11-05T11-29-45Z
|
|||||||
# https://github.com/cloudflare/cloudflared/releases
|
# https://github.com/cloudflare/cloudflared/releases
|
||||||
ARG CLOUDFLARED_VERSION=2024.11.0
|
ARG CLOUDFLARED_VERSION=2024.11.0
|
||||||
# https://www.postgresql.org/support/versioning/ - Upgraded to 16 if the we have a manual upgrade guide?
|
# https://www.postgresql.org/support/versioning/ - Upgraded to 16 if the we have a manual upgrade guide?
|
||||||
ARG POSTGRES_VERSION=16
|
ARG POSTGRES_VERSION=15
|
||||||
|
|
||||||
# Add user/group
|
# Add user/group
|
||||||
ARG USER_ID=9999
|
ARG USER_ID=9999
|
||||||
@@ -118,8 +118,9 @@ COPY --chown=www-data:www-data templates ./templates
|
|||||||
COPY --chown=www-data:www-data artisan artisan
|
COPY --chown=www-data:www-data artisan artisan
|
||||||
|
|
||||||
# Configure Nginx and S6 overlay
|
# Configure Nginx and S6 overlay
|
||||||
COPY docker/prod/nginx.conf /etc/nginx/conf.d/custom.conf
|
COPY docker/production/etc/nginx/conf.d/custom.conf /etc/nginx/conf.d/custom.conf
|
||||||
COPY --chmod=755 docker/prod/etc/s6-overlay/ /etc/s6-overlay/
|
COPY docker/production/etc/nginx/site-opts.d/http.conf /etc/nginx/site-opts.d/http.conf
|
||||||
|
COPY --chmod=755 docker/production/etc/s6-overlay/ /etc/s6-overlay/
|
||||||
|
|
||||||
RUN mkdir -p /etc/nginx/conf.d && \
|
RUN mkdir -p /etc/nginx/conf.d && \
|
||||||
chown -R www-data:www-data /etc/nginx && \
|
chown -R www-data:www-data /etc/nginx && \
|
45
docker/production/etc/nginx/site-opts.d/http.conf
Normal file
45
docker/production/etc/nginx/site-opts.d/http.conf
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
listen 80 default_server;
|
||||||
|
listen [::]:80 default_server;
|
||||||
|
listen 8080 default_server;
|
||||||
|
listen [::]:8080 default_server;
|
||||||
|
|
||||||
|
root /var/www/html/public;
|
||||||
|
|
||||||
|
# Set allowed "index" files
|
||||||
|
index index.html index.htm index.php;
|
||||||
|
|
||||||
|
server_name _;
|
||||||
|
|
||||||
|
charset utf-8;
|
||||||
|
|
||||||
|
# Set max upload to 2048M
|
||||||
|
client_max_body_size 2048M;
|
||||||
|
|
||||||
|
# Healthchecks: Set /healthcheck to be the healthcheck URL
|
||||||
|
location /healthcheck {
|
||||||
|
access_log off;
|
||||||
|
|
||||||
|
# set max 5 seconds for healthcheck
|
||||||
|
fastcgi_read_timeout 5s;
|
||||||
|
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_NAME /healthcheck;
|
||||||
|
fastcgi_param SCRIPT_FILENAME /healthcheck;
|
||||||
|
fastcgi_pass 127.0.0.1:9000;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Have NGINX try searching for PHP files as well
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php?$query_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Pass "*.php" files to PHP-FPM
|
||||||
|
location ~ \.php$ {
|
||||||
|
fastcgi_pass 127.0.0.1:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_buffers 8 8k;
|
||||||
|
fastcgi_buffer_size 8k;
|
||||||
|
fastcgi_read_timeout 99;
|
||||||
|
}
|
5
docker/production/etc/s6-overlay/s6-rc.d/horizon/run
Normal file
5
docker/production/etc/s6-overlay/s6-rc.d/horizon/run
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/command/execlineb -P
|
||||||
|
foreground {
|
||||||
|
s6-sleep 5
|
||||||
|
php /var/www/html/artisan start:horizon
|
||||||
|
}
|
@@ -1,3 +1,2 @@
|
|||||||
#!/command/execlineb -P
|
#!/command/execlineb -P
|
||||||
s6-setuidgid webuser
|
|
||||||
php /var/www/html/artisan app:init
|
php /var/www/html/artisan app:init
|
@@ -0,0 +1,5 @@
|
|||||||
|
#!/command/execlineb -P
|
||||||
|
foreground {
|
||||||
|
s6-sleep 5
|
||||||
|
php /var/www/html/artisan start:scheduler
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user