From 1ab7405e2e68e1bf2bae6d807c8b5b16cf6a8177 Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Sun, 13 Apr 2025 15:16:54 +0200 Subject: [PATCH] refactor(ServicesGenerate): update command signature from 'services:generate' to 'generate:services' for consistency; update Dockerfile to run service generation during build; update Odoo image version to 18 and add extra addons volume in compose configuration --- app/Console/Commands/ServicesGenerate.php | 2 +- docker/production/Dockerfile | 33 ++++++++++++----------- templates/compose/odoo.yaml | 3 ++- templates/service-templates.json | 2 +- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/app/Console/Commands/ServicesGenerate.php b/app/Console/Commands/ServicesGenerate.php index b45707c5c..1c325d7dd 100644 --- a/app/Console/Commands/ServicesGenerate.php +++ b/app/Console/Commands/ServicesGenerate.php @@ -11,7 +11,7 @@ class ServicesGenerate extends Command /** * {@inheritdoc} */ - protected $signature = 'services:generate'; + protected $signature = 'generate:services'; /** * {@inheritdoc} diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile index 38bb50f3f..e7ba549f5 100644 --- a/docker/production/Dockerfile +++ b/docker/production/Dockerfile @@ -22,7 +22,7 @@ USER root ARG USER_ID ARG GROUP_ID -RUN docker-php-serversideup-set-id www-data $USER_ID:$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 @@ -30,6 +30,7 @@ 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 +RUN php artisan generate:services # ================================================================= # Stage 2: Frontend assets compilation @@ -63,13 +64,13 @@ WORKDIR /var/www/html USER root -RUN docker-php-serversideup-set-id www-data $USER_ID:$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 # 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 +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 \ @@ -82,17 +83,17 @@ RUN apk add --no-cache \ 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 +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 && \ +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 @@ -128,8 +129,8 @@ COPY docker/production/etc/nginx/conf.d/custom.conf /etc/nginx/conf.d/custom.con 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 && \ - chown -R www-data:www-data /etc/nginx && \ +RUN mkdir -p /etc/nginx/conf.d && + chown -R www-data:www-data /etc/nginx && chmod -R 755 /etc/nginx # Install MinIO client diff --git a/templates/compose/odoo.yaml b/templates/compose/odoo.yaml index 2c25283fc..e999095f0 100644 --- a/templates/compose/odoo.yaml +++ b/templates/compose/odoo.yaml @@ -6,7 +6,7 @@ services: odoo: - image: odoo:17 + image: odoo:18 environment: - SERVICE_FQDN_ODOO_8069 - HOST=postgresql @@ -14,6 +14,7 @@ services: - PASSWORD=$SERVICE_PASSWORD_POSTGRES volumes: - odoo-web-data:/var/lib/odoo + - odoo-extra-addons:/mnt/extra-addons healthcheck: test: ["CMD", "curl", "-f", "http://127.0.0.1:8069"] interval: 2s diff --git a/templates/service-templates.json b/templates/service-templates.json index 531bb639a..f3ab0be72 100644 --- a/templates/service-templates.json +++ b/templates/service-templates.json @@ -2274,7 +2274,7 @@ "odoo": { "documentation": "https://www.odoo.com/?utm_source=coolify.io", "slogan": "Odoo is a suite of open-source business apps that cover all your company needs.", - "compose": "c2VydmljZXM6CiAgb2RvbzoKICAgIGltYWdlOiAnb2RvbzoxNycKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9PRE9PXzgwNjkKICAgICAgLSBIT1NUPXBvc3RncmVzcWwKICAgICAgLSBVU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgdm9sdW1lczoKICAgICAgLSAnb2Rvby13ZWItZGF0YTovdmFyL2xpYi9vZG9vJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwNjknCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMzAKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdwb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19EQj1wb3N0Z3JlcwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kIHBvc3RncmVzJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==", + "compose": "c2VydmljZXM6CiAgb2RvbzoKICAgIGltYWdlOiAnb2RvbzoxOCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9PRE9PXzgwNjkKICAgICAgLSBIT1NUPXBvc3RncmVzcWwKICAgICAgLSBVU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgdm9sdW1lczoKICAgICAgLSAnb2Rvby13ZWItZGF0YTovdmFyL2xpYi9vZG9vJwogICAgICAtICdvZG9vLWV4dHJhLWFkZG9uczovbW50L2V4dHJhLWFkZG9ucycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDY5JwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMwCiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfREI9cG9zdGdyZXMKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCBwb3N0Z3JlcycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=", "tags": [ "business", "apps",