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

This commit is contained in:
Andras Bacsai
2025-04-13 15:16:54 +02:00
parent 4bc9786046
commit 1ab7405e2e
4 changed files with 21 additions and 19 deletions

View File

@@ -11,7 +11,7 @@ class ServicesGenerate extends Command
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected $signature = 'services:generate'; protected $signature = 'generate:services';
/** /**
* {@inheritdoc} * {@inheritdoc}

View File

@@ -22,7 +22,7 @@ USER root
ARG USER_ID ARG USER_ID
ARG GROUP_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 docker-php-serversideup-set-file-permissions --owner $USER_ID:$GROUP_ID --service nginx
WORKDIR /var/www/html 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 RUN composer install --no-dev --no-interaction --no-plugins --no-scripts --prefer-dist
USER www-data USER www-data
RUN php artisan generate:services
# ================================================================= # =================================================================
# Stage 2: Frontend assets compilation # Stage 2: Frontend assets compilation
@@ -63,13 +64,13 @@ WORKDIR /var/www/html
USER root 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 docker-php-serversideup-set-file-permissions --owner $USER_ID:$GROUP_ID --service nginx
# Install PostgreSQL repository and keys # Install PostgreSQL repository and keys
RUN apk add --no-cache gnupg && \ RUN apk add --no-cache gnupg &&
mkdir -p /usr/share/keyrings && \ mkdir -p /usr/share/keyrings &&
curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor > /usr/share/keyrings/postgresql.gpg curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor >/usr/share/keyrings/postgresql.gpg
# Install system dependencies # Install system dependencies
RUN apk add --no-cache \ RUN apk add --no-cache \
@@ -82,17 +83,17 @@ RUN apk add --no-cache \
vim vim
# Configure shell aliases # Configure shell aliases
RUN echo "alias ll='ls -al'" >> /etc/profile && \ RUN echo "alias ll='ls -al'" >>/etc/profile &&
echo "alias a='php artisan'" >> /etc/profile && \ echo "alias a='php artisan'" >>/etc/profile &&
echo "alias logs='tail -f storage/logs/laravel.log'" >> /etc/profile echo "alias logs='tail -f storage/logs/laravel.log'" >>/etc/profile
# Install Cloudflared based on architecture # Install Cloudflared based on architecture
RUN mkdir -p /usr/local/bin && \ RUN mkdir -p /usr/local/bin &&
if [ "${TARGETPLATFORM}" = "linux/amd64" ]; then \ if [ "${TARGETPLATFORM}" = "linux/amd64" ]; then
curl -sSL "https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-amd64" -o /usr/local/bin/cloudflared; \ curl -sSL "https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-amd64" -o /usr/local/bin/cloudflared
elif [ "${TARGETPLATFORM}" = "linux/arm64" ]; then \ elif [ "${TARGETPLATFORM}" = "linux/arm64" ]; then
curl -sSL "https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-arm64" -o /usr/local/bin/cloudflared; \ curl -sSL "https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-arm64" -o /usr/local/bin/cloudflared
fi && \ fi &&
chmod +x /usr/local/bin/cloudflared chmod +x /usr/local/bin/cloudflared
# Configure PHP # 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 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/ 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 &&
chmod -R 755 /etc/nginx chmod -R 755 /etc/nginx
# Install MinIO client # Install MinIO client

View File

@@ -6,7 +6,7 @@
services: services:
odoo: odoo:
image: odoo:17 image: odoo:18
environment: environment:
- SERVICE_FQDN_ODOO_8069 - SERVICE_FQDN_ODOO_8069
- HOST=postgresql - HOST=postgresql
@@ -14,6 +14,7 @@ services:
- PASSWORD=$SERVICE_PASSWORD_POSTGRES - PASSWORD=$SERVICE_PASSWORD_POSTGRES
volumes: volumes:
- odoo-web-data:/var/lib/odoo - odoo-web-data:/var/lib/odoo
- odoo-extra-addons:/mnt/extra-addons
healthcheck: healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:8069"] test: ["CMD", "curl", "-f", "http://127.0.0.1:8069"]
interval: 2s interval: 2s

View File

@@ -2274,7 +2274,7 @@
"odoo": { "odoo": {
"documentation": "https://www.odoo.com/?utm_source=coolify.io", "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.", "slogan": "Odoo is a suite of open-source business apps that cover all your company needs.",
"compose": "c2VydmljZXM6CiAgb2RvbzoKICAgIGltYWdlOiAnb2RvbzoxNycKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9PRE9PXzgwNjkKICAgICAgLSBIT1NUPXBvc3RncmVzcWwKICAgICAgLSBVU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgdm9sdW1lczoKICAgICAgLSAnb2Rvby13ZWItZGF0YTovdmFyL2xpYi9vZG9vJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwNjknCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMzAKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdwb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19EQj1wb3N0Z3JlcwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kIHBvc3RncmVzJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==", "compose": "c2VydmljZXM6CiAgb2RvbzoKICAgIGltYWdlOiAnb2RvbzoxOCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9PRE9PXzgwNjkKICAgICAgLSBIT1NUPXBvc3RncmVzcWwKICAgICAgLSBVU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgdm9sdW1lczoKICAgICAgLSAnb2Rvby13ZWItZGF0YTovdmFyL2xpYi9vZG9vJwogICAgICAtICdvZG9vLWV4dHJhLWFkZG9uczovbW50L2V4dHJhLWFkZG9ucycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDY5JwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMwCiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfREI9cG9zdGdyZXMKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCBwb3N0Z3JlcycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
"tags": [ "tags": [
"business", "business",
"apps", "apps",