{%- from 'macros.twig' import startup_cmd -%}

FROM {{ variant }}_{{ os }}_base AS {{ variant }}_{{ os }}

COPY LICENSE .env composer.* symfony.lock ./
COPY bin/console bin/
COPY config config/
{% if variant != 'fcgi_php' %}
COPY example_files/public/* public/
{% endif %}
COPY migrations migrations/
COPY docker/php/zz-postmill.ini "${PHP_INI_DIR}/conf.d/"
COPY docker/php/zz-postmill-prod.ini "${PHP_INI_DIR}/conf.d/"
{% if variant == 'apache' %}
COPY public/index.php public/.htaccess public/
COPY --from=assets /app/public/build public/build/
{% elseif variant == 'fcgi_php' %}
COPY public/index.php public/
COPY --from=assets /app/public/build/*.json public/build/
{% elseif variant == 'frankenphp' %}
COPY public/index.php public/
COPY --from=assets /app/public/build public/build/
{% endif %}
COPY src src/
COPY templates templates/
COPY translations translations/
COPY --from=composer_deps /app/vendor vendor/

ENV APP_ENV=prod \
    COMPOSER_NO_DEV=1 \
    DATABASE_URL='pgsql://postmill:secret@db/postmill' \
    LOG_FILE='php://stderr'

RUN set -eux; \
    cp "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"; \
    composer dump-autoload --classmap-authoritative --optimize; \
    composer run-script post-install-cmd; \
    composer dump-env prod; \
    composer clear-cache;

VOLUME /app/public/media/cache
VOLUME /app/public/submission_images
VOLUME /app/var/cache/prod/pools
VOLUME /app/var/sessions

ARG APP_BRANCH=""
ARG APP_VERSION=""
ENV APP_BRANCH=${APP_BRANCH} \
    APP_VERSION=${APP_VERSION}
{%- if variant == 'frankenphp' %} \
    CADDY_SERVER_EXTRA_DIRECTIVES="import cache.caddyfile"
{% else %}

{% endif %}

{% if variant == 'frankenphp' %}
COPY docker/frankenphp/Caddyfile /etc/caddy/Caddyfile
COPY docker/frankenphp/cache.caddyfile /etc/caddy/
COPY docker/frankenphp/Caddyfile /etc/frankenphp/Caddyfile
COPY docker/frankenphp/cache.caddyfile /etc/frankenphp/
{% endif %}
COPY docker/php/postmill-entrypoint.sh /usr/local/bin/
COPY docker/php/postmill-startup.sh /usr/local/bin/

{{ startup_cmd('postmill-startup.sh', variant) }}
