+ heroku docker
This commit is contained in:
89
.dev/Dockerfile
Normal file
89
.dev/Dockerfile
Normal file
@@ -0,0 +1,89 @@
|
||||
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"]
|
||||
Reference in New Issue
Block a user