23 Commits
Author SHA1 Message Date
Jonatan Rek 83b31d5c37 Fix
Build - Docker Image - PROD / build-apache-amd64 (push) Successful in 10m32s
Build - Docker Image - PROD / build-apache-arm64 (push) Successful in 10m33s
Build - Docker Image - PROD / manifest-apache (push) Successful in 29s
2026-09-19 12:13:31 +02:00
Jonatan Rek 2ab9a9c1d5 Fix Image jpeg support for imagick
Build - Docker Image - PROD / build-apache-amd64 (push) Failing after 46s
Build - Docker Image - PROD / build-apache-arm64 (push) Failing after 38s
Build - Docker Image - PROD / manifest-apache (push) Skipped
2026-08-24 20:54:08 +02:00
Jonatan Rek fdb2ce8155 FIx
Build - Docker Image - PROD / build-apache-amd64 (push) Successful in 8m0s
Build - Docker Image - PROD / build-apache-arm64 (push) Successful in 11m33s
Build - Docker Image - PROD / manifest-apache (push) Successful in 28s
2026-02-22 16:33:58 +01:00
JonatanRek 39f26ae755 Update README.md
Build - Docker Image - PROD / publish (push) Successful in 13m37s
2026-02-17 19:07:40 +00:00
JonatanRek bc7dd69990 Update README.md
Build - Docker Image - PROD / publish (push) Has been cancelled
2026-02-17 19:07:30 +00:00
patrik d0440712b5 Update fmp-alpine/Dockerfile
Build - Docker Image - PROD / publish (push) Successful in 13m53s
2026-02-17 18:36:41 +00:00
patrik 4db9a0f224 Update fmp-alpine/Dockerfile
Build - Docker Image - PROD / publish (push) Has been cancelled
2026-02-17 18:34:33 +00:00
patrik 88f12b18bc Readme
Build - Docker Image - PROD / publish (push) Successful in 12m57s
2026-02-17 18:27:35 +01:00
Jonatan Rek 3e4c781ce2 Merge branch 'main' of https://git.steelants.cz/JonatanRek/DOCKER_PHP_BASE
Build - Docker Image - PROD / publish (push) Successful in 13m32s
2026-02-15 18:50:29 +01:00
Jonatan Rek 4706600cb0 Add additional PHP extensions and system dependencies to Dockerfile 2026-02-15 18:50:25 +01:00
JonatanRek 24381ef43f Update queue-statistics command sleep duration to 5 seconds
Build - Docker Image - PROD / publish (push) Successful in 11m21s
2026-02-03 09:25:07 +01:00
JonatanRek 16bd695890 Small Fixes 2026-02-03 09:24:57 +01:00
JonatanRek 7461f0a25e Fixes
Build - Docker Image - PROD / publish (push) Has been cancelled
2026-02-03 09:22:25 +01:00
JonatanRek 305aa9c83d Merge branch 'main' of https://git.steelants.cz/JonatanRek/DOCKER_PHP_BASE
Build - Docker Image - PROD / publish (push) Successful in 11m35s
2026-02-03 08:18:24 +01:00
JonatanRek a9e3ace717 Fix oo cache 2026-02-03 08:18:23 +01:00
Jonatan Rek 85ed62b401 Fix context paths in Docker build configuration
Build - Docker Image - PROD / publish (push) Failing after 10m42s
2026-01-29 15:37:40 +01:00
Jonatan Rek 34cc835f1c Fixes
Build - Docker Image - PROD / publish (push) Has been cancelled
2026-01-29 15:36:15 +01:00
Jonatan Rek c498df805c Fix
Build - Docker Image - PROD / publish (push) Successful in 11m16s
Build - Docker Image - RC / publish (push) Failing after 22s
2026-01-28 11:16:03 +01:00
Jonatan Rek b6f8151bd4 Fixes
Build - Docker Image - PROD / publish (push) Failing after 8m13s
2026-01-28 10:41:13 +01:00
Jonatan Rek 189dc975bd Refactor Docker setup: move Dockerfiles to respective directories and add supervisor configurations
Build - Docker Image - PROD / publish (push) Has been cancelled
2026-01-28 10:40:10 +01:00
JonatanRek 33f9ca082a Merge branch 'main'
Build - Docker Image - PROD / publish (push) Failing after 1m14s
Build - Docker Image - RC / publish (push) Successful in 9m5s
2025-12-04 10:23:53 +01:00
JonatanRek 5cef6189ba Fix for DT
Build - Docker Image - RC / publish (push) Failing after 54s
2025-12-04 10:23:02 +01:00
JonatanRek 3939dfbea4 Fix
Build - Docker Image - RC / publish (push) Failing after 51s
Build - Docker Image - PROD / publish (push) Successful in 6m31s
2025-11-26 14:38:47 +01:00
7 changed files with 190 additions and 91 deletions
-66
View File
@@ -1,66 +0,0 @@
name: "Build - Docker Image - RC"
run-name: ${{ gitea.actor }} is runs ci pipeline
on:
push:
branches:
- dev
schedule:
- cron: "0 1 * * *"
concurrency:
group: docker-build-dev
cancel-in-progress: true
jobs:
publish:
runs-on: ubuntu-latest
permissions:
packages: write
container:
image: catthehacker/ubuntu:act-latest
steps:
- uses: actions/checkout@v3
- uses: docker/setup-buildx-action@v1
- uses: docker/login-action@v3
with:
registry: git.steelants.cz
username: ${{ secrets.GITEAUSER }}
password: ${{ secrets.GITEAPASSWD }}
- uses: docker/build-push-action@v6
with:
context: .
push: true
labels: |
org.steelants.image.traffic.version=${{ env.release_version }}
tags: git.steelants.cz/steelants/docker_php_base:dev
# ✅ Notifikace při úspěšném deploymentu
- name: Discord Webhook Success
if: success()
uses: tsickert/discord-webhook@v6.0.0
with:
webhook-url: ${{ secrets.WEBHOOK_URL }}
content: |
✅ Build successful!
Repo: ${{ github.repository }}
Branch: ${{ github.ref_name }}
Commit: ${{ github.sha }}
Version: ${{ env.release_version }}
# ❌ Notifikace při neúspěšném deploymentu
- name: Discord Webhook Failure
if: failure()
uses: tsickert/discord-webhook@v6.0.0
with:
webhook-url: ${{ secrets.WEBHOOK_URL }}
content: |
❌ Build failed!
Repo: ${{ github.repository }}
Branch: ${{ github.ref_name }}
Commit: ${{ github.sha }}
Version: ${{ env.release_version }}
+61 -16
View File
@@ -9,58 +9,103 @@ on:
schedule:
- cron: "0 1 * * *"
workflow_dispatch:
concurrency:
group: docker-build-prod
cancel-in-progress: true
jobs:
publish:
# ─── APACHE ───────────────────────────────────────────────────────────────
build-apache-amd64:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
container:
image: catthehacker/ubuntu:act-latest
outputs:
digest: ${{ steps.build.outputs.digest }}
steps:
- uses: actions/checkout@v3
- uses: docker/setup-buildx-action@v1
- uses: docker/login-action@v3
with:
registry: git.steelants.cz
username: ${{ secrets.GITEAUSER }}
password: ${{ secrets.GITEAPASSWD }}
- uses: docker/build-push-action@v6
- id: build
uses: docker/build-push-action@v6
with:
context: .
push: true
labels: |
org.steelants.image.traffic.version=${{ env.release_version }}
tags: git.steelants.cz/steelants/docker_php_base:latest
context: apache
platforms: linux/amd64
outputs: type=image,name=git.steelants.cz/steelants/docker_php_base,push-by-digest=true,name-canonical=true,push=true
build-apache-arm64:
runs-on: ubuntu-latest-arm
permissions:
contents: read
packages: write
container:
image: catthehacker/ubuntu:act-latest
outputs:
digest: ${{ steps.build.outputs.digest }}
steps:
- uses: actions/checkout@v3
- uses: docker/setup-buildx-action@v1
- uses: docker/login-action@v3
with:
registry: git.steelants.cz
username: ${{ secrets.GITEAUSER }}
password: ${{ secrets.GITEAPASSWD }}
- id: build
uses: docker/build-push-action@v6
with:
context: apache
platforms: linux/arm64
outputs: type=image,name=git.steelants.cz/steelants/docker_php_base,push-by-digest=true,name-canonical=true,push=true
manifest-apache:
needs: [build-apache-amd64, build-apache-arm64]
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
container:
image: catthehacker/ubuntu:act-latest
steps:
- uses: docker/setup-buildx-action@v1
- uses: docker/login-action@v3
with:
registry: git.steelants.cz
username: ${{ secrets.GITEAUSER }}
password: ${{ secrets.GITEAPASSWD }}
- name: Create and push multi-arch manifest
run: |
docker buildx imagetools create -t git.steelants.cz/steelants/docker_php_base:latest \
git.steelants.cz/steelants/docker_php_base@${{ needs.build-apache-amd64.outputs.digest }} \
git.steelants.cz/steelants/docker_php_base@${{ needs.build-apache-arm64.outputs.digest }}
# ✅ Notifikace při úspěšném deploymentu
- name: Discord Webhook Success
if: success()
uses: tsickert/discord-webhook@v6.0.0
with:
webhook-url: ${{ secrets.WEBHOOK_URL }}
content: |
✅ Build successful!
APACHE - Build successful! (amd64 + arm64)
Repo: ${{ github.repository }}
Branch: ${{ github.ref_name }}
Commit: ${{ github.sha }}
Version: ${{ env.release_version }}
# ❌ Notifikace při neúspěšném deploymentu
- name: Discord Webhook Failure
if: failure()
uses: tsickert/discord-webhook@v6.0.0
with:
webhook-url: ${{ secrets.WEBHOOK_URL }}
content: |
❌ Build failed!
APACHE - Build failed!
Repo: ${{ github.repository }}
Branch: ${{ github.ref_name }}
Commit: ${{ github.sha }}
Version: ${{ env.release_version }}
+4
View File
@@ -0,0 +1,4 @@
```bash
docker build --platform linux/arm/v7,linux/arm64/v8,linux/amd64 -t git.steelants.cz/steelants/docker_php_base:latest ./apache
docker push git.steelants.cz/steelants/docker_php_base:latest
```
+38 -5
View File
@@ -23,6 +23,13 @@ RUN --mount=type=cache,target=/var/cache/apt \
libzip-dev \
zip \
unzip \
zlib1g-dev \
libicu-dev \
libjpeg-dev \
libpng-dev \
libwebp-dev \
libfreetype6-dev \
g++ \
nodejs \
npm \
cron \
@@ -51,9 +58,34 @@ RUN --mount=type=cache,target=/var/cache/apt \
# Enable Apache mod_rewrite for URL rewriting
RUN a2enmod rewrite
RUN docker-php-ext-configure intl
RUN docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql pgsql pdo_pgsql zip opcache pcntl sockets
RUN docker-php-ext-enable imagick
RUN docker-php-ext-configure \
opcache --enable-opcache
RUN docker-php-ext-install \
pdo_mysql \
pgsql \
pdo_pgsql \
zip \
opcache \
pcntl \
sockets\
bcmath \
soap \
gd \
intl
RUN docker-php-ext-enable \
imagick \
opcache
# Fail fast if the JPEG delegate did not make it into the image
RUN php -r 'if (!in_array("JPEG", Imagick::queryFormats())) { fwrite(STDERR, "ERROR: imagick built without JPEG delegate\n"); exit(1); } echo "imagick JPEG delegate OK\n";' && \
php -r 'if (!function_exists("imagecreatefromjpeg")) { fwrite(STDERR, "ERROR: gd built without JPEG support\n"); exit(1); } echo "gd JPEG OK\n";'
# PHP
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_FILE" && \
@@ -63,7 +95,7 @@ RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_FILE" && \
printf '[Date]\ndate.timezone="%s"\n', $TZ > "$PHP_INI_DIR/conf.d/tzone.ini"
#OPCACHE
RUN echo '\n\
RUN echo "\n\
[opcache]\n\
opcache.enable=1\n\
opcache.revalidate_freq=0\n\
@@ -72,11 +104,12 @@ opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}\n\
opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}\n\
opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}\n\
opcache.interned_strings_buffer=16\n\
opcache.fast_shutdown=1' >> "$PHP_INI_DIR/conf.d/opcache.ini"
opcache.fast_shutdown=1" >> "$PHP_INI_DIR/conf.d/opcache.ini"
#SUPERVISORD
RUN mkdir -p /var/log/supervisor
COPY supervisor/ /etc/supervisor/
COPY ./supervisor/supervisord.conf /etc/supervisor/supervisord.conf
COPY ./supervisor/conf.d/laravel-queues.conf /etc/supervisor/conf.d/laravel-queues.conf
# Setup Crone
RUN mkdir -p /var/log/cron && \
@@ -1,19 +1,19 @@
[program:queue-default]
command=/usr/local/bin/php /var/www/html/artisan queue:work --queue=default,importstatistics
command=/usr/local/bin/php /var/www/html/artisan queue:work --sleep=3 --tries=3 --queue=default,importstatistics
user=www-data
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/queue-default.log
[program:queue-statistics]
command=/usr/local/bin/php /var/www/html/artisan queue:work --queue=statistics
command=/usr/local/bin/php /var/www/html/artisan queue:work --sleep=5 --tries=3 --queue=statistics
user=www-data
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/queue-statistics.log
[program:queue-detections]
command=/usr/local/bin/php /var/www/html/artisan queue:work --queue=detections
command=/usr/local/bin/php /var/www/html/artisan queue:work --sleep=3 --tries=3 --queue=detections
user=www-data
autostart=true
autorestart=true
+83
View File
@@ -0,0 +1,83 @@
FROM php:8.4-fpm-alpine
ENV TZ="Europe/Prague" \
PHP_OPCACHE_ENABLE=1 \
PHP_OPCACHE_VALIDATE_TIMESTAMPS=0 \
PHP_OPCACHE_REVALIDATE_FREQ=0 \
PHP_OPCACHE_MEMORY_CONSUMPTION=192 \
PHP_OPCACHE_MAX_ACCELERATED_FILES=20000 \
PHP_OPCACHE_MAX_WASTED_PERCENTAGE=10 \
PHP_OPCACHE_INTERNED_STRINGS_BUFFER=16 \
APP_ENV=production \
APP_DEBUG=false
RUN apk add --no-cache \
tzdata \
bash \
ca-certificates \
libpq \
libzip \
imagemagick \
imagemagick-dev \
librsvg \
freetype \
libjpeg-turbo \
libpng \
icu \
oniguruma \
libxml2
RUN apk add --no-cache --virtual .build-deps \
$PHPIZE_DEPS \
postgresql-dev \
libzip-dev \
freetype-dev \
libjpeg-turbo-dev \
libpng-dev \
icu-dev \
libxml2-dev \
linux-headers
RUN docker-php-ext-configure \
gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) \
pdo_mysql \
pdo_pgsql \
pgsql \
zip \
bcmath \
soap \
gd \
intl \
opcache \
sockets \
pcntl
RUN pecl install imagick \
&& docker-php-ext-enable imagick
RUN apk del .build-deps
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \
&& echo "date.timezone=${TZ}" > "$PHP_INI_DIR/conf.d/99-timezone.ini"
RUN { \
echo "memory_limit=256M"; \
echo "upload_max_filesize=100M"; \
echo "post_max_size=100M"; \
echo "realpath_cache_size=4096K"; \
echo "realpath_cache_ttl=600"; \
} > "$PHP_INI_DIR/conf.d/99-laravel.ini"
RUN { \
echo "[opcache]"; \
echo "opcache.enable=${PHP_OPCACHE_ENABLE}"; \
echo "opcache.enable_cli=0"; \
echo "opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}"; \
echo "opcache.revalidate_freq=${PHP_OPCACHE_REVALIDATE_FREQ}"; \
echo "opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}"; \
echo "opcache.interned_strings_buffer=${PHP_OPCACHE_INTERNED_STRINGS_BUFFER}"; \
echo "opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}"; \
echo "opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}"; \
echo "opcache.save_comments=1"; \
} > "$PHP_INI_DIR/conf.d/10-opcache.ini"