90 lines
2.8 KiB
Docker
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"]
|