|
|
|
# composer install
|
|
|
|
FROM composer:latest AS composer
|
|
|
|
COPY ./ /app/
|
|
|
|
RUN composer --no-ansi install --no-dev --ignore-platform-reqs
|
|
|
|
RUN composer --no-ansi dump-autoload --optimize
|
|
|
|
|
|
|
|
# Intermediate containers for less layers
|
|
|
|
FROM alpine as translation
|
|
|
|
RUN apk add gettext
|
|
|
|
COPY resources/lang/ /data
|
|
|
|
RUN find /data -type f -name '*.po' -exec sh -c 'file="{}"; msgfmt "${file%.*}.po" -o "${file%.*}.mo"' \;
|
|
|
|
|
|
|
|
FROM alpine as data
|
|
|
|
COPY .babelrc .browserslistrc composer.json LICENSE package.json README.md webpack.config.js yarn.lock /app/
|
|
|
|
COPY bin/ /app/bin
|
|
|
|
COPY config/ /app/config
|
|
|
|
COPY db/ /app/db
|
|
|
|
COPY includes/ /app/includes
|
|
|
|
COPY public/ /app/public
|
|
|
|
COPY resources/views /app/resources/views
|
|
|
|
COPY src/ /app/src
|
|
|
|
COPY storage/ /app/storage
|
|
|
|
|
|
|
|
COPY --from=translation /data/ /app/resources/lang
|
|
|
|
COPY --from=composer /app/vendor/ /app/vendor
|
|
|
|
COPY --from=composer /app/composer.lock /app/
|
|
|
|
|
|
|
|
RUN find /app/storage/ -type f -not -name VERSION -exec rm {} \;
|
|
|
|
|
|
|
|
# Fetch supercronic
|
|
|
|
FROM alpine as supercronic
|
|
|
|
|
|
|
|
ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/v0.1.12/supercronic-linux-amd64 \
|
|
|
|
SUPERCRONIC=supercronic-linux-amd64 \
|
|
|
|
SUPERCRONIC_SHA1SUM=048b95b48b708983effb2e5c935a1ef8483d9e3e
|
|
|
|
|
|
|
|
RUN apk add --no-cache curl \
|
|
|
|
&& curl -fsSLO "$SUPERCRONIC_URL" \
|
|
|
|
&& echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \
|
|
|
|
&& chmod +x "$SUPERCRONIC" \
|
|
|
|
&& mv "$SUPERCRONIC" "/usr/local/bin/${SUPERCRONIC}"
|
|
|
|
|
|
|
|
# Build a container for running tasks
|
|
|
|
FROM php:8-cli-alpine as cron
|
|
|
|
|
|
|
|
RUN apk add --no-cache icu-dev && \
|
|
|
|
docker-php-ext-install intl pdo_mysql
|
|
|
|
|
|
|
|
COPY --from=data /app/ /app
|
|
|
|
COPY --from=supercronic /usr/local/bin/supercronic-linux-amd64 /usr/local/bin/supercronic
|
|
|
|
COPY docker/crontab /etc/crontab
|
|
|
|
|
|
|
|
ENTRYPOINT ["/usr/local/bin/supercronic"]
|
|
|
|
|
|
|
|
# Build the PHP container
|
|
|
|
FROM php:8-fpm-alpine
|
|
|
|
WORKDIR /var/www
|
|
|
|
RUN apk add --no-cache icu-dev && \
|
|
|
|
docker-php-ext-install intl pdo_mysql
|
|
|
|
COPY --from=data /app/ /var/www
|
|
|
|
RUN chown -R www-data:www-data /var/www/storage/ && \
|
|
|
|
rm -r /var/www/html
|
|
|
|
|
|
|
|
ARG VERSION
|
|
|
|
RUN if [[ ! -f /var/www/storage/app/VERSION ]] && [[ ! -z "${VERSION}" ]]; then \
|
|
|
|
echo -n "${VERSION}" > /var/www/storage/app/VERSION; fi
|
|
|
|
|
|
|
|
ENV TRUSTED_PROXIES 10.0.0.0/8,::ffff:10.0.0.0/8,\
|
|
|
|
127.0.0.0/8,::ffff:127.0.0.0/8,\
|
|
|
|
172.16.0.0/12,::ffff:172.16.0.0/12,\
|
|
|
|
192.168.0.0/16,::ffff:192.168.0.0/16,\
|
|
|
|
::1/128,fc00::/7,fec0::/10
|