Compare commits
20
Commits
0.0.0-rc.16
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
83b31d5c37 | ||
|
|
2ab9a9c1d5 | ||
|
|
fdb2ce8155 | ||
|
|
39f26ae755 | ||
|
|
bc7dd69990 | ||
|
|
d0440712b5 | ||
|
|
4db9a0f224 | ||
|
|
88f12b18bc | ||
|
|
3e4c781ce2 | ||
|
|
4706600cb0 | ||
|
|
24381ef43f | ||
|
|
16bd695890 | ||
|
|
7461f0a25e | ||
|
|
305aa9c83d | ||
|
|
a9e3ace717 | ||
|
|
85ed62b401 | ||
|
|
34cc835f1c | ||
|
|
c498df805c | ||
|
|
b6f8151bd4 | ||
|
|
189dc975bd |
@@ -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 }}
|
|
||||||
@@ -9,58 +9,103 @@ on:
|
|||||||
schedule:
|
schedule:
|
||||||
- cron: "0 1 * * *"
|
- cron: "0 1 * * *"
|
||||||
|
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: docker-build-prod
|
group: docker-build-prod
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
publish:
|
|
||||||
|
# ─── APACHE ───────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
build-apache-amd64:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
|
contents: read
|
||||||
packages: write
|
packages: write
|
||||||
container:
|
container:
|
||||||
image: catthehacker/ubuntu:act-latest
|
image: catthehacker/ubuntu:act-latest
|
||||||
|
outputs:
|
||||||
|
digest: ${{ steps.build.outputs.digest }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- uses: docker/setup-buildx-action@v1
|
- uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
- uses: docker/login-action@v3
|
- uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: git.steelants.cz
|
registry: git.steelants.cz
|
||||||
username: ${{ secrets.GITEAUSER }}
|
username: ${{ secrets.GITEAUSER }}
|
||||||
password: ${{ secrets.GITEAPASSWD }}
|
password: ${{ secrets.GITEAPASSWD }}
|
||||||
|
- id: build
|
||||||
- uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: apache
|
||||||
push: true
|
platforms: linux/amd64
|
||||||
labels: |
|
outputs: type=image,name=git.steelants.cz/steelants/docker_php_base,push-by-digest=true,name-canonical=true,push=true
|
||||||
org.steelants.image.traffic.version=${{ env.release_version }}
|
|
||||||
tags: git.steelants.cz/steelants/docker_php_base:latest
|
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
|
- name: Discord Webhook Success
|
||||||
if: success()
|
if: success()
|
||||||
uses: tsickert/discord-webhook@v6.0.0
|
uses: tsickert/discord-webhook@v6.0.0
|
||||||
with:
|
with:
|
||||||
webhook-url: ${{ secrets.WEBHOOK_URL }}
|
webhook-url: ${{ secrets.WEBHOOK_URL }}
|
||||||
content: |
|
content: |
|
||||||
✅ Build successful!
|
✅ APACHE - Build successful! (amd64 + arm64)
|
||||||
Repo: ${{ github.repository }}
|
Repo: ${{ github.repository }}
|
||||||
Branch: ${{ github.ref_name }}
|
Branch: ${{ github.ref_name }}
|
||||||
Commit: ${{ github.sha }}
|
Commit: ${{ github.sha }}
|
||||||
Version: ${{ env.release_version }}
|
|
||||||
|
|
||||||
# ❌ Notifikace při neúspěšném deploymentu
|
|
||||||
- name: Discord Webhook Failure
|
- name: Discord Webhook Failure
|
||||||
if: failure()
|
if: failure()
|
||||||
uses: tsickert/discord-webhook@v6.0.0
|
uses: tsickert/discord-webhook@v6.0.0
|
||||||
with:
|
with:
|
||||||
webhook-url: ${{ secrets.WEBHOOK_URL }}
|
webhook-url: ${{ secrets.WEBHOOK_URL }}
|
||||||
content: |
|
content: |
|
||||||
❌ Build failed!
|
❌ APACHE - Build failed!
|
||||||
Repo: ${{ github.repository }}
|
Repo: ${{ github.repository }}
|
||||||
Branch: ${{ github.ref_name }}
|
Branch: ${{ github.ref_name }}
|
||||||
Commit: ${{ github.sha }}
|
Commit: ${{ github.sha }}
|
||||||
Version: ${{ env.release_version }}
|
|
||||||
@@ -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
|
||||||
|
```
|
||||||
@@ -23,6 +23,13 @@ RUN --mount=type=cache,target=/var/cache/apt \
|
|||||||
libzip-dev \
|
libzip-dev \
|
||||||
zip \
|
zip \
|
||||||
unzip \
|
unzip \
|
||||||
|
zlib1g-dev \
|
||||||
|
libicu-dev \
|
||||||
|
libjpeg-dev \
|
||||||
|
libpng-dev \
|
||||||
|
libwebp-dev \
|
||||||
|
libfreetype6-dev \
|
||||||
|
g++ \
|
||||||
nodejs \
|
nodejs \
|
||||||
npm \
|
npm \
|
||||||
cron \
|
cron \
|
||||||
@@ -51,7 +58,14 @@ RUN --mount=type=cache,target=/var/cache/apt \
|
|||||||
# Enable Apache mod_rewrite for URL rewriting
|
# Enable Apache mod_rewrite for URL rewriting
|
||||||
RUN a2enmod rewrite
|
RUN a2enmod rewrite
|
||||||
|
|
||||||
|
RUN docker-php-ext-configure intl
|
||||||
|
|
||||||
|
RUN docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp
|
||||||
|
|
||||||
# Install PHP extensions
|
# Install PHP extensions
|
||||||
|
RUN docker-php-ext-configure \
|
||||||
|
opcache --enable-opcache
|
||||||
|
|
||||||
RUN docker-php-ext-install \
|
RUN docker-php-ext-install \
|
||||||
pdo_mysql \
|
pdo_mysql \
|
||||||
pgsql \
|
pgsql \
|
||||||
@@ -62,9 +76,16 @@ RUN docker-php-ext-install \
|
|||||||
sockets\
|
sockets\
|
||||||
bcmath \
|
bcmath \
|
||||||
soap \
|
soap \
|
||||||
gd
|
gd \
|
||||||
|
intl
|
||||||
|
|
||||||
RUN docker-php-ext-enable imagick
|
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
|
# PHP
|
||||||
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_FILE" && \
|
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_FILE" && \
|
||||||
@@ -74,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"
|
printf '[Date]\ndate.timezone="%s"\n', $TZ > "$PHP_INI_DIR/conf.d/tzone.ini"
|
||||||
|
|
||||||
#OPCACHE
|
#OPCACHE
|
||||||
RUN echo '\n\
|
RUN echo "\n\
|
||||||
[opcache]\n\
|
[opcache]\n\
|
||||||
opcache.enable=1\n\
|
opcache.enable=1\n\
|
||||||
opcache.revalidate_freq=0\n\
|
opcache.revalidate_freq=0\n\
|
||||||
@@ -83,7 +104,7 @@ opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}\n\
|
|||||||
opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}\n\
|
opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}\n\
|
||||||
opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}\n\
|
opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}\n\
|
||||||
opcache.interned_strings_buffer=16\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
|
#SUPERVISORD
|
||||||
RUN mkdir -p /var/log/supervisor
|
RUN mkdir -p /var/log/supervisor
|
||||||
+3
-3
@@ -1,19 +1,19 @@
|
|||||||
[program:queue-default]
|
[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
|
user=www-data
|
||||||
autostart=true
|
autostart=true
|
||||||
autorestart=true
|
autorestart=true
|
||||||
stdout_logfile=/var/log/supervisor/queue-default.log
|
stdout_logfile=/var/log/supervisor/queue-default.log
|
||||||
|
|
||||||
[program:queue-statistics]
|
[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
|
user=www-data
|
||||||
autostart=true
|
autostart=true
|
||||||
autorestart=true
|
autorestart=true
|
||||||
stdout_logfile=/var/log/supervisor/queue-statistics.log
|
stdout_logfile=/var/log/supervisor/queue-statistics.log
|
||||||
|
|
||||||
[program:queue-detections]
|
[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
|
user=www-data
|
||||||
autostart=true
|
autostart=true
|
||||||
autorestart=true
|
autorestart=true
|
||||||
@@ -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"
|
||||||
Reference in New Issue
Block a user