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"]