Files
blog/.dev/Dockerfile
2022-06-10 17:43:25 +02:00

90 lines
2.8 KiB
Docker

ARG STACK_VERSION=20
ARG YQ_VERSION=4.25.2
ARG JQ_VERSION=1.6
ARG XDEBUG_VERSION=3.1.5
ARG USER_NAME=heroku
ARG UID=1000
ARG GID=1000
FROM heroku/heroku:${STACK_VERSION}-build AS dev-base
ENV DEBIAN_FRONTEND noninteractive
RUN \
apt-get -qq update; \
apt-get install -y --no-install-recommends \
mysql-client \
awscli \
&& apt-get download nginx-common \
&& rm -rf /var/lib/apt/lists/*; \
wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh; \
curl -sLo /usr/local/bin/mhsendmail \
https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64; \
chmod +x /usr/local/bin/mhsendmail;
FROM composer AS build
ARG YQ_VERSION
ARG JQ_VERSION
WORKDIR /workspace/bin
RUN \
curl -sSLo ./yq https://github.com/mikefarah/yq/releases/download/v${YQ_VERSION}/yq_linux_amd64; \
chmod a+x ./yq; \
curl -sSLo ./jq https://github.com/stedolan/jq/releases/download/jq-${JQ_VERSION}/jq-linux64; \
chmod a+x ./jq;
WORKDIR /workspace
COPY ./composer.json /tmp/composer.json
RUN \
PATH="/workspace/bin:$PATH"; \
php_version=$(cat /tmp/composer.json | jq '.require .php' --raw-output); \
composer init --name "heroku/dev" --type project --require="php:$php_version" --stability=stable --no-interaction 2>/dev/stdout; \
composer install --ignore-platform-reqs --no-dev --prefer-dist --optimize-autoloader --no-interaction 2>/dev/stdout; \
rm -rf ./vendor; \
php_modules=$(cat /tmp/composer.json | bin/jq '.require | keys []' --raw-output | grep ext-); \
for m in $php_modules; do composer require --no-install --ignore-platform-reqs $m:* 2>/dev/stdout; done;
FROM dev-base
ARG STACK_VERSION
ARG USER_NAME
ARG UID
ARG GID
ARG STACK=heroku-${STACK_VERSION}
ARG XDEBUG_VERSION
COPY .dev/bashrc /tmp/bashrc
COPY .dev/entrypoint-dev.sh /entrypoint.sh
RUN groupadd -r --gid ${GID} ${USER_NAME}; \
useradd -M ${USER_NAME} -d /app --uid ${UID} --gid ${GID}; \
cat /tmp/bashrc >> /etc/profile; rm /tmp/bashrc; \
mkdir -p /app /workspace /buildpacks; chown -R ${USER_NAME}:${USER_NAME} /app /workspace /buildpacks; \
chmod a+x /entrypoint.sh;
COPY --chown=${USER_NAME}:${USER_NAME} .dev/xdebug-install.sh /tmp/xdebug-install.sh
COPY --chown=${USER_NAME}:${USER_NAME} --from=build /workspace /workspace
USER ${USER_NAME}
WORKDIR /workspace
RUN \
mkdir -p /buildpacks/php; \
curl -fsSL https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku/php.tgz | tar -xz -C /buildpacks/php; \
echo "web: tail -f /dev/null" >> Procfile; \
mkdir -p /tmp/build_cache /tmp/env; \
/buildpacks/php/bin/compile $(pwd) /tmp/build_cache /tmp/env 2>/dev/stdout; \
PATH="/workspace/.heroku/php/bin:$PATH"; \
LOGDIR=/tmp /tmp/xdebug-install.sh 2>/dev/stdout; \
rm -rf /tmp/* /app/*
WORKDIR /app
ENV STACK=${STACK}
ENV PORT=3000
ENV FORCE_SECRETS=0
ENTRYPOINT [ "/entrypoint.sh" ]
CMD ["web"]