mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
The bare ghcr.io/shopware/docker-base:8.3 tag is frozen. Its digest
sha256:14826eb9 is the same as 8.3.25, built 2025-09-05, and carries
PHP_VERSION=8.3.25. Upstream has published only flavoured tags since
8.3.26. 8.3.36-caddy (sha256:b1fdca6e, built 2026-10-30, also the
current 8.3-caddy) carries PHP_VERSION=8.3.36. It has the same
supervisord entrypoint, www-data user and exposed ports 8000/9000 as
the bare tag. That clears the 8.3.36 security floor that hlth-runtime
reports for shopware-web, -worker and -scheduler.
The flavoured tag needs two follow-ups:
- SHOPWARE_COMPOSER_PLATFORM_PHP drops the "-<flavor>" suffix before it
pads major.minor. Without that, composer gets platform.php
"8.3.36-caddy". It now renders 8.3.36, and 8.3 still renders 8.3.0.
- shopware/docker 6ae1717 ("feat: remove default env vars") removed
SHOPWARE_ES_ENABLED=0, SHOPWARE_ES_INDEXING_ENABLED=0 and
SHOPWARE_ES_INDEX_PREFIX= from the image. Shopware 6.7.13.0 reads
them through %env()% with no container default, so env.j2 now sets
the values the old image shipped. SHOPWARE_HTTP_DEFAULT_TTL keeps its
7200 default from core services.xml. Nothing in Shopware reads
DATABASE_PORT, and the role uses DATABASE_URL.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
50 lines
2.3 KiB
Django/Jinja
50 lines
2.3 KiB
Django/Jinja
{% include 'roles/sys-svc-container/templates/env.j2' %}
|
|
|
|
DOMAIN={{ SHOPWARE_DOMAIN }}
|
|
APP_URL={{ lookup('tls', application_id, 'url.base') }}
|
|
APP_DEBUG={{ MODE_DEBUG | bool| ternary(1, 0) }}
|
|
|
|
APP_ENV={{ 'dev' if (ENVIRONMENT | lower) == 'development' else 'prod' }}
|
|
INSTANCE_ID={{ application_id }}
|
|
|
|
TRUSTED_PROXIES={{ ([networks.internet.values() | select | list, NETWORK_TRUSTED_PROXY_CIDRS] | flatten) | join(',') }}
|
|
TRUSTED_HOSTS={{ SHOPWARE_DOMAIN }}
|
|
|
|
DATABASE_URL=mysql://{{ lookup('database', application_id, 'username') }}:{{ lookup('database', application_id, 'password') }}@{{ lookup('database', application_id, 'host') }}:{{ lookup('database', application_id, 'port') }}/{{ lookup('database', application_id, 'name') }}
|
|
INIT_PHP_MEMORY_LIMIT={{ lookup('service_memory_mb', application_id, 'init', 0.5) }}M
|
|
|
|
{% if SHOPWARE_REDIS_ENABLED | bool %}
|
|
REDIS_URL={{ SHOPWARE_REDIS_URL }}/0
|
|
CACHE_URL={{ SHOPWARE_REDIS_URL }}/1
|
|
MESSENGER_TRANSPORT_DSN={{ SHOPWARE_REDIS_URL }}/2
|
|
{% set _redis_user = lookup('engine', 'redis', application_id, 'username') %}
|
|
{% set _redis_password = lookup('engine', 'redis', application_id, 'password') %}
|
|
{% set _session_host = lookup('engine', 'redis', application_id, 'host') ~ ':' ~ lookup('engine', 'redis', application_id, 'port') %}
|
|
{% if _redis_password | length > 0 and _redis_user | length > 0 %}
|
|
REDIS_SESSION_TARGET=tcp://{{ _session_host }}?database=3&auth[user]={{ _redis_user | urlencode }}&auth[pass]={{ _redis_password | urlencode }}
|
|
{% elif _redis_password | length > 0 %}
|
|
REDIS_SESSION_TARGET=tcp://{{ _session_host }}?database=3&auth={{ _redis_password | urlencode }}
|
|
{% else %}
|
|
REDIS_SESSION_TARGET=tcp://{{ _session_host }}?database=3
|
|
{% endif %}
|
|
{% else %}
|
|
CACHE_URL=file://cache
|
|
{% endif %}
|
|
|
|
SHOPWARE_ES_ENABLED=0
|
|
SHOPWARE_ES_INDEXING_ENABLED=0
|
|
SHOPWARE_ES_INDEX_PREFIX=
|
|
|
|
{% if SHOPWARE_OPENSEARCH_ENABLED %}
|
|
ELASTICSEARCH_URL=http://opensearch:{{ SHOPWARE_OPENSEARCH_PORT }}
|
|
OPENSEARCH_URL=http://opensearch:{{ SHOPWARE_OPENSEARCH_PORT }}
|
|
OPENSEARCH_HOST=opensearch
|
|
OPENSEARCH_PORT_NUMBER={{ SHOPWARE_OPENSEARCH_PORT }}
|
|
OPENSEARCH_INITIAL_ADMIN_PASSWORD={{ SHOPWARE_OPENSEARCH_INITIAL_ADMIN_PASSWORD | dotenv_quote }}
|
|
{% endif %}
|
|
|
|
{% set email = lookup('email', application_id) %}
|
|
{% if email.enabled | bool %}
|
|
MAILER_DSN=smtps://{{ email.username }}:{{ email.password }}@{{ email.host }}:{{ email.port }}
|
|
{% endif %}
|