Update composer, make build more robust

This commit is contained in:
Jaysen 2020-09-01 19:50:18 -06:00
commit ea690707ca
2 changed files with 51 additions and 21 deletions

View file

@ -1,7 +1,10 @@
FROM composer:1.9 as composer
ARG PHP_VERSION
ARG PHP_INTERFACE
ARG ARCHITECTURE_VERSION
FROM composer:1.10 as composer
FROM php:7.3-fpm-alpine3.10 as alpine
FROM php:${PHP_VERSION}-${PHP_INTERFACE}-alpine${ARCHITECTURE_VERSION} as alpine
ENV COMPOSER_ALLOW_SUPERUSER 1
COPY --from=composer /usr/bin/composer /usr/bin/composer
WORKDIR /app
@ -17,7 +20,6 @@ RUN apk add --no-cache \
RUN apk add --no-cache --virtual .node-build-deps \
g++ \
make \
python \
&& docker-php-ext-configure intl \
&& docker-php-ext-install -j$(nproc) \
intl \
@ -36,7 +38,7 @@ EXPOSE 80
EXPOSE 8000
FROM php:7.3-fpm-stretch as stretch
FROM php:${PHP_VERSION}-${PHP_INTERFACE}-${ARCHITECTURE_VERSION} as debian
ENV COMPOSER_ALLOW_SUPERUSER 1
COPY --from=composer /usr/bin/composer /usr/bin/composer
WORKDIR /app
@ -54,7 +56,6 @@ RUN apt update \
&& apt install --no-install-recommends -y \
libicu-dev \
nodejs \
npm \
&& ln -s $(which nodejs) /usr/local/bin/node \
&& npm -g install yarn \
&& docker-php-ext-configure intl \

View file

@ -1,28 +1,57 @@
VERSION ?= test
.DEFAULT:
@echo 'Invalid target.'
@echo
@echo ' alpine build alpine image'
@echo ' stretch build debian stretch image'
@echo ' all build all image variants'
@echo ' Required ENV variables:'
@echo ' PHP_VERSION - the version of php to build, e.g., 7.4'
@echo ' PHP_INTERFACE - the type of php interface, e.g., apache, fpm'
@echo ' ARCHITECTURE_VERSION - the version of architecture, e.g., buster (for debian) or 3.12 (for alpine)'
@echo ' (optional for alpine)'
@echo
@echo ' push build and push images to the registry'
@echo ' alpine build alpine image'
@echo ' debian build debian stretch image'
@echo
@echo ' push-alpine build and push alpine image to the registry'
@echo ' push-debian build and push debian image to the registry'
@echo
default: .DEFAULT
all:
PHP_VERSION=7.3 PHP_INTERFACE=apache ARCHITECTURE_VERSION=buster make debian
REGISTRY=registry.xengul.com/xen/laravel-base PHP_VERSION=7.3 PHP_INTERFACE=apache ARCHITECTURE_VERSION=buster make push-debian
PHP_VERSION=7.3 PHP_INTERFACE=apache ARCHITECTURE_VERSION=stretch make debian
REGISTRY=registry.xengul.com/xen/laravel-base PHP_VERSION=7.3 PHP_INTERFACE=apache ARCHITECTURE_VERSION=stretch make push-debian
PHP_VERSION=7.3 PHP_INTERFACE=fpm ARCHITECTURE_VERSION=buster make debian
REGISTRY=registry.xengul.com/xen/laravel-base PHP_VERSION=7.3 PHP_INTERFACE=fpm ARCHITECTURE_VERSION=buster make push-debian
PHP_VERSION=7.3 PHP_INTERFACE=fpm ARCHITECTURE_VERSION=stretch make debian
REGISTRY=registry.xengul.com/xen/laravel-base PHP_VERSION=7.3 PHP_INTERFACE=fpm ARCHITECTURE_VERSION=stretch make push-debian
PHP_VERSION=7.4 PHP_INTERFACE=apache ARCHITECTURE_VERSION=buster make debian
REGISTRY=registry.xengul.com/xen/laravel-base PHP_VERSION=7.4 PHP_INTERFACE=apache ARCHITECTURE_VERSION=buster make push-debian
PHP_VERSION=7.4 PHP_INTERFACE=fpm ARCHITECTURE_VERSION=buster make debian
REGISTRY=registry.xengul.com/xen/laravel-base PHP_VERSION=7.4 PHP_INTERFACE=fpm ARCHITECTURE_VERSION=buster make push-debian
PHP_VERSION=7.3 PHP_INTERFACE=fpm ARCHITECTURE_VERSION=3.12 make alpine
REGISTRY=registry.xengul.com/xen/laravel-base PHP_VERSION=7.3 PHP_INTERFACE=fpm ARCHITECTURE_VERSION=3.12 make push-alpine
PHP_VERSION=7.4 PHP_INTERFACE=fpm ARCHITECTURE_VERSION=3.12 make alpine
REGISTRY=registry.xengul.com/xen/laravel-base PHP_VERSION=7.4 PHP_INTERFACE=fpm ARCHITECTURE_VERSION=3.12 make push-alpine
alpine:
BUILDKIT=1 docker build --pull --target=alpine -t laravel-base:${VERSION}-alpine .
BUILDKIT=1 docker build \
--build-arg PHP_VERSION=${PHP_VERSION} \
--build-arg PHP_INTERFACE=${PHP_INTERFACE} \
--build-arg ARCHITECTURE_VERSION=${ARCHITECTURE_VERSION} \
--pull --target=alpine -t laravel-base:${PHP_VERSION}-${PHP_INTERFACE}-alpine${ARCHITECTURE_VERSION} .
stretch:
BUILDKIT=1 docker build --pull --target=stretch -t laravel-base:${VERSION}-stretch .
debian:
BUILDKIT=1 docker build \
--build-arg PHP_VERSION=${PHP_VERSION} \
--build-arg PHP_INTERFACE=${PHP_INTERFACE} \
--build-arg ARCHITECTURE_VERSION=${ARCHITECTURE_VERSION} \
--pull --target=debian -t laravel-base:${PHP_VERSION}-${PHP_INTERFACE}-${ARCHITECTURE_VERSION} .
all: alpine stretch
push-alpine: alpine
docker tag laravel-base:${PHP_VERSION}-${PHP_INTERFACE}-alpine${ARCHITECTURE_VERSION} ${REGISTRY}:${PHP_VERSION}-${PHP_INTERFACE}-alpine${ARCHITECTURE_VERSION}
docker push ${REGISTRY}:${PHP_VERSION}-${PHP_INTERFACE}-alpine${ARCHITECTURE_VERSION}
push: all
docker tag laravel-base:${VERSION}-alpine ${REGISTRY}:${VERSION}-alpine
docker tag laravel-base:${VERSION}-stretch ${REGISTRY}:${VERSION}-stretch
docker push ${REGISTRY}:${VERSION}-alpine
docker push ${REGISTRY}:${VERSION}-stretch
push-debian: debian
docker tag laravel-base:${PHP_VERSION}-${PHP_INTERFACE}-${ARCHITECTURE_VERSION} ${REGISTRY}:${PHP_VERSION}-${PHP_INTERFACE}-${ARCHITECTURE_VERSION}
docker push ${REGISTRY}:${PHP_VERSION}-${PHP_INTERFACE}-${ARCHITECTURE_VERSION}