Moving to Travis from Jenkins

This commit is contained in:
Greyscale 2019-08-14 17:34:54 +02:00
parent 1295ed6405
commit a382ea9ef7
49 changed files with 1407 additions and 1880 deletions

9
.dockerignore Normal file
View file

@ -0,0 +1,9 @@
doc/
test-app/
tester/
build.yml
Dockerfile
.travis-ci.yml
.gitlab-ci.yml
Makefile*
test.yml

91
.travis-ci.yml Normal file
View file

@ -0,0 +1,91 @@
language: bash
before_script:
- 'docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD $DOCKER_REGISTRY'
- 'sudo rm /usr/local/bin/docker-compose'
- 'curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-`uname -s`-`uname -m` > docker-compose'
- 'chmod +x docker-compose'
- 'sudo mv docker-compose /usr/local/bin'
- 'git rev-parse --short HEAD > marshall/marshall_version'
- 'date +%Y-%m-%d\ %H:%M:%S > marshall/marshall_build_date'
- 'hostname > marshall/marshall_build_host'
script:
- 'docker-compose -f build.yml build $IMAGE'
after_script:
- 'docker-compose -f build.yml push $IMAGE'
notifications:
email:
- matthew@baggett.me
deploy:
project_name: Gone.io Base Images
provider: pages
skip_cleanup: true
github_token: $GITHUB_TOKEN
keep_history: true
on:
branch: master
committer_from_gh: true
env:
- IMAGE=marshall
- IMAGE=node-8
- IMAGE=node-8-onbuild
- IMAGE=node-8-compiler
- IMAGE=node-8-compiler-onbuild
- IMAGE=node-10
- IMAGE=node-10-onbuild
- IMAGE=node-10-compiler
- IMAGE=node-10-compiler-onbuild
- IMAGE=node-11
- IMAGE=node-11-onbuild
- IMAGE=node-11-compiler
- IMAGE=node-11-compiler-onbuild
- IMAGE=node-12
- IMAGE=node-12-onbuild
- IMAGE=node-12-compiler
- IMAGE=node-12-compiler-onbuild
- IMAGE=php-core-56
- IMAGE=php-core-70
- IMAGE=php-core-71
- IMAGE=php-core-72
- IMAGE=php-core-73
- IMAGE=php-cli-56
- IMAGE=php-cli-56-onbuild
- IMAGE=php-cli-70
- IMAGE=php-cli-70-onbuild
- IMAGE=php-cli-71
- IMAGE=php-cli-71-onbuild
- IMAGE=php-cli-72
- IMAGE=php-cli-72-onbuild
- IMAGE=php-cli-73
- IMAGE=php-cli-73-onbuild
- IMAGE=php-apache-56
- IMAGE=php-apache-56-onbuild
- IMAGE=php-apache-70
- IMAGE=php-apache-70-onbuild
- IMAGE=php-apache-71
- IMAGE=php-apache-71-onbuild
- IMAGE=php-apache-72
- IMAGE=php-apache-72-onbuild
- IMAGE=php-apache-73
- IMAGE=php-apache-73-onbuild
- IMAGE=php-nginx-56
- IMAGE=php-nginx-56-onbuild
- IMAGE=php-nginx-70
- IMAGE=php-nginx-70-onbuild
- IMAGE=php-nginx-71
- IMAGE=php-nginx-71-onbuild
- IMAGE=php-nginx-72
- IMAGE=php-nginx-72-onbuild
- IMAGE=php-nginx-73
- IMAGE=php-nginx-73-onbuild
- IMAGE=php-cli-latest
- IMAGE=php-cli-onbuild-latest
- IMAGE=php-apache-latest
- IMAGE=php-apache-onbuild-latest
- IMAGE=php-nginx-latest
- IMAGE=php-nginx-onbuild-latest

297
Dockerfile Normal file
View file

@ -0,0 +1,297 @@
FROM ubuntu:latest AS marshall
MAINTAINER Matthew Baggett <hello@gone.io>
ENV DEBIAN_FRONTEND="teletype" \
TERM=xterm-256color \
COMPOSER_ALLOW_SUPERUSER=1 \
COLOUR_FAIL='\e[31m' \
COLOUR_SUCCESS='\e[32m' \
COLOUR_NONE='\e[39m' \
DEFAULT_TZ='Europe/London'
CMD ["runsvdir", "-P", "/etc/service"]
WORKDIR /app
COPY ./marshall/ /
RUN chmod +x /installers/install && \
mv /marshall_* /etc && \
/installers/install && \
rm -rf /installers
FROM marshall AS php-core
ARG PHP_PACKAGES
COPY php-core/install-report.sh /usr/bin/install-report
RUN apt-get -qq update && \
apt-get -yq install --no-install-recommends \
python3-software-properties \
software-properties-common \
&& \
add-apt-repository -y ppa:ondrej/php && \
apt-get -qq update && \
apt-get -yq install --no-install-recommends $PHP_PACKAGES &&\
apt-get remove -yq \
software-properties-common \
python-apt-common \
python3-software-properties \
python3.5 python3.5-minimal libpython3.5-minimal \
&& \
apt-get autoremove -y && \
rm -rf \
/usr/bin/mysqlslap \
/usr/bin/mysqldump \
/usr/bin/mysqlpump \
/usr/bin/mysql_embedded \
&& \
curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer && \
composer global require -q hirak/prestissimo && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
chmod +x /usr/bin/install-report && \
/usr/bin/install-report
FROM php-core AS php-cli
RUN apt-get -qq update && \
apt-get -qy upgrade && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Install a funky cool repl.
RUN composer global require -q psy/psysh:@stable && \
ln -s /root/.composer/vendor/psy/psysh/bin/psysh /usr/local/bin/repl && \
/usr/local/bin/repl -v
COPY php+cli/psysh-config.php /root/.config/psysh/config.php
FROM php-cli AS php-cli-onbuild
# On build, add anything in with Dockerfile into /app
ONBUILD ADD ./ /app
# If composer.json/composer.lock exist, do a composer install.
ONBUILD RUN composer install; exit 0
ONBUILD RUN composer dumpautoload -o; exit 0
ONBUILD RUN /usr/bin/install-report
FROM php-core AS php-nginx
ARG PHP_VERSION
ENV PHPFPM_MAX_CHILDREN=25
COPY php+nginx /conf
RUN apt-get -qq update && \
apt-get -yqq install --no-install-recommends \
lsb-core \
gnupg \
&& \
sh -c 'echo "deb http://ppa.launchpad.net/nginx/stable/ubuntu $(lsb_release -sc) main" \
> /etc/apt/sources.list.d/nginx-stable.list' && \
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C && \
apt-get -qq update && \
apt-get -yqq install --no-install-recommends \
nginx \
php$PHP_VERSION-fpm \
&& \
apt-get remove -yq \
lsb-core \
cups-common \
software-properties-common \
python-apt-common \
python3-software-properties \
python3.5 python3.5-minimal libpython3.5-minimal \
&& \
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
sed -i "s/cgi.fix_pathinfo.*/cgi.fix_pathinfo=0/g" /etc/php/$PHP_VERSION/fpm/php.ini && \
sed -i "s/upload_max_filesize.*/upload_max_filesize = 1024M/g" /etc/php/$PHP_VERSION/fpm/php.ini && \
sed -i "s/post_max_size.*/post_max_size = 1024M/g" /etc/php/$PHP_VERSION/fpm/php.ini && \
sed -i "s/max_execution_time.*/max_execution_time = 0/g" /etc/php/$PHP_VERSION/fpm/php.ini && \
sed -i "s/variables_order.*/variables_order = \"EGPCS\"/g" /etc/php/$PHP_VERSION/fpm/php.ini && \
sed -i "s/error_reporting.*/error_reporting = E_ALL \& \~E_DEPRECATED \& \~E_STRICT \& \~E_CORE_WARNING/g" /etc/php/$PHP_VERSION/fpm/php.ini && \
cp /etc/php/$PHP_VERSION/fpm/php.ini /etc/php/$PHP_VERSION/cli/php.ini && \
if test "$PHP_VERSION" = "5.6" ; then \
echo "Skipping clear_env"; \
else \
echo "clear_env=no" >> /etc/php/$PHP_VERSION/fpm/php-fpm.conf; \
echo "clear_env=no" >> /etc/php/$PHP_VERSION/fpm/pool.d/www.ini; \
fi && \
mkdir /run/php && \
rm -fr /var/www/html && \
ln -s /app /var/www/html && \
mv /conf/NginxDefault /etc/nginx/sites-enabled/default && \
mkdir /etc/service/nginx && \
mkdir /etc/service/php-fpm && \
mv /conf/nginx.runit /etc/service/nginx/run && \
mv /conf/php-fpm.runit /etc/service/php-fpm/run && \
chmod +x /etc/service/*/run && \
rm -R /conf && \
sed -i "s/{{PHP}}/$PHP_VERSION/g" /etc/nginx/sites-enabled/default && \
sed -i "s/{{PHP}}/$PHP_VERSION/g" /etc/service/php-fpm/run && \
# Enable status panel
sed -i -e "s|;pm.status_path|pm.status_path|g" /etc/php/*/fpm/pool.d/www.conf && \
# Using environment variables in config files works, it would seem. Neat!
sed -i -e "s|pm.max_children = 5|pm.max_children = \${PHPFPM_MAX_CHILDREN}|g" /etc/php/*/fpm/pool.d/www.conf
# Expose ports.
EXPOSE 80
# Create a healthcheck that makes sure our httpd is up
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost/ || exit 1
FROM php-nginx AS php-nginx-onbuild
# On build, add anything in with Dockerfile into /app
ONBUILD ADD ./ /app
# If composer.json/composer.lock exist, do a composer install.
ONBUILD RUN composer install; exit 0
ONBUILD RUN composer dumpautoload -o; exit 0
ONBUILD RUN /usr/bin/install-report
FROM php-core AS php-apache
RUN apt-get -qq update && \
apt-get -yq install --no-install-recommends \
apache2 \
libapache2-mod-php$PHP_VERSION \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
\
sed -i "s/upload_max_filesize.*/upload_max_filesize = 1024M/g" /etc/php/$PHP_VERSION/apache2/php.ini && \
sed -i "s/post_max_size.*/post_max_size = 1024M/g" /etc/php/$PHP_VERSION/apache2/php.ini && \
sed -i "s/max_execution_time.*/max_execution_time = 0/g" /etc/php/$PHP_VERSION/apache2/php.ini && \
sed -i "s/variables_order.*/variables_order = \"EGPCS\"/g" /etc/php/$PHP_VERSION/apache2/php.ini && \
sed -i "s/error_reporting.*/error_reporting = E_ALL \& \~E_DEPRECATED \& \~E_STRICT \& \~E_CORE_WARNING/g" /etc/php/$PHP_VERSION/apache2/php.ini && \
cp /etc/php/$PHP_VERSION/apache2/php.ini /etc/php/$PHP_VERSION/cli/php.ini && \
sed -i "s/ServerSignature On/ServerSignature Off/g" /etc/apache2/conf-enabled/security.conf && \
sed -i "s/ServerTokens OS/ServerTokens Prod/g" /etc/apache2/conf-enabled/security.conf
# Expose ports.
EXPOSE 80
# Create a healthcheck that makes sure our httpd is up
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost/ || exit 1
COPY php+apache /conf
RUN rm -fr /var/www/html && \
ln -s /app /var/www/html && \
mv /conf/ApacheConfig.conf /etc/apache2/sites-enabled/000-default.conf && \
mv /conf/envvars /etc/apache2/ && \
mv /conf/apache2.conf /etc/apache2/ && \
mkdir -p /etc/service/apache && \
mkdir -p /etc/service/show_logs && \
mv /conf/apache.runit /etc/service/apache/run && \
mv /conf/show_logs.runit /etc/service/show_logs/run && \
chmod +x /etc/service/*/run && \
rm /conf && \
a2enmod rewrite
FROM php-apache AS php-apache-onbuild
# On build, add anything in with Dockerfile into /app
ONBUILD ADD ./ /app
# If composer.json/composer.lock exist, do a composer install.
ONBUILD RUN composer install --ignore-platform-reqs; exit 0
ONBUILD RUN composer dumpautoload -o; exit 0
ONBUILD RUN /usr/bin/install-report
FROM marshall AS nodejs
ARG NODE_VERSION
ARG YARN_VERSION
ARG PATH="/app/node_modules/.bin:${PATH}"
RUN mkdir ~/.gnupg && \
echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf && \
apt-get -qq update && \
apt-get -yq install --no-install-recommends \
lsb-core \
gnupg \
&& \
\
ARCH= && \
dpkgArch="$(dpkg --print-architecture)" && \
case "${dpkgArch##*-}" in \
amd64) ARCH='x64';; \
ppc64el) ARCH='ppc64le';; \
s390x) ARCH='s390x';; \
arm64) ARCH='arm64';; \
armhf) ARCH='armv7l';; \
i386) ARCH='x86';; \
*) echo "unsupported architecture"; exit 1 ;; \
esac \
# gpg keys listed at https://github.com/nodejs/node#release-keys
&& set -ex \
&& for key in \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
FD3A5288F042B6850C66B31F09FE44734EB7990E \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
77984A986EBC2AA786BC0F66B01FBB92821C587A \
8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
4ED778F539E3634C779C87C6D7062848A1AB005C \
A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
B9E2F5981AA6E0CD28160D9FF13993A75599653C \
; do \
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
done \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
&& rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs \
&& set -ex \
&& for key in \
6A010C5166006599AA17F08146C2130DFD2497F5 \
; do \
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
done \
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
&& mkdir -p /opt \
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
\
&& apt-get autoremove -y \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
FROM nodejs AS nodejs-compiler
RUN apt-get -qq update && \
apt-get -yq install --no-install-recommends \
python \
build-essential \
&& \
apt-get autoremove -y && \
apt-get clean && \
rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
FROM nodejs AS nodejs-onbuild
ONBUILD ADD ./ /app
FROM nodejs-compiler AS nodejs-compiler-onbuild
ONBUILD ADD ./ /app

465
Jenkinsfile vendored
View file

@ -1,465 +0,0 @@
pipeline {
agent any
options {
disableConcurrentBuilds()
timeout(time: 1, unit: 'HOURS')
}
stages {
stage('Prepare') {
steps {
sh 'printenv'
telegramSend "Pipeline STARTED: `${env.JOB_NAME}`\n\nAuthor: `${env.GIT_AUTHOR_NAME} <${env.GIT_AUTHOR_EMAIL}>`\nBuild Number: ${env.BUILD_NUMBER}\n\n${env.RUN_DISPLAY_URL}"
}
}
stage('Build Marshall') {
parallel {
stage('Marshall') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make prepare'
sh 'make build-marshall'
}
}
stage('Marshall') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make prepare'
sh 'make build-marshall'
sh 'make push-marshall'
}
}
}
}
stage('Build PHP Runtime Containers'){
parallel {
stage('PHP 5.6'){
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-core-5.6'
sh 'make push-core-5.6'
}
}
stage('PHP 5.6'){
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-core-5.6'
sh 'make push-core-5.6'
}
}
stage('PHP 7.0'){
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-core-7.0'
}
}
stage('PHP 7.0'){
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-core-7.0'
sh 'make push-core-7.0'
}
}
stage('PHP 7.1'){
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-core-7.1'
}
}
stage('PHP 7.1'){
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-core-7.1'
sh 'make push-core-7.1'
}
}
stage('PHP 7.2'){
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-core-7.2'
}
}
stage('PHP 7.2'){
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-core-7.2'
sh 'make push-core-7.2'
}
}
stage('PHP 7.3'){
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-core-7.3'
}
}
stage('PHP 7.3'){
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-core-7.3'
sh 'make push-core-7.3'
}
}
stage('Node 8'){
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-node-8'
sh 'make tag-node-8'
}
}
stage('Node 8'){
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-node-8'
sh 'make tag-node-8'
sh 'make push-node-8'
}
}
stage('Node 10'){
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-node-10'
sh 'make tag-node-10'
}
}
stage('Node 10'){
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-node-10'
sh 'make tag-node-10'
sh 'make push-node-10'
}
}
stage('Node 11'){
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-node-11'
sh 'make tag-node-11'
}
}
stage('Node 11'){
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-node-11'
sh 'make tag-node-11'
sh 'make push-node-11'
}
}
stage('Node 12'){
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-node-12'
sh 'make tag-node-12'
}
}
stage('Node 12'){
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-node-12'
sh 'make tag-node-12'
sh 'make push-node-12'
}
}
}
}
stage('Build Derived PHP Containers'){
parallel {
stage('CLI PHP 5.6') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-cli-5.6'
}
}
stage('CLI PHP 5.6') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-cli-5.6'
sh 'make push-cli-5.6'
}
}
stage('Nginx PHP 5.6') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-nginx-5.6'
}
}
stage('Nginx PHP 5.6') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-nginx-5.6'
sh 'make push-nginx-5.6'
}
}
stage('Apache PHP 5.6') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-apache-5.6'
}
}
stage('Apache PHP 5.6') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-apache-5.6'
sh 'make push-apache-5.6'
}
}
stage('CLI PHP 7.0') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-cli-7.0'
}
}
stage('CLI PHP 7.0') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-cli-7.0'
sh 'make push-cli-7.0'
}
}
stage('Nginx PHP 7.0') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-nginx-7.0'
}
}
stage('Nginx PHP 7.0') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-nginx-7.0'
sh 'make push-nginx-7.0'
}
}
stage('Apache PHP 7.0') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-apache-7.0'
}
}
stage('Apache PHP 7.0') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-apache-7.0'
sh 'make push-apache-7.0'
}
}
stage('CLI PHP 7.1') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-cli-7.1'
}
}
stage('CLI PHP 7.1') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-cli-7.1'
sh 'make push-cli-7.1'
}
}
stage('Nginx PHP 7.1') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-nginx-7.1'
}
}
stage('Nginx PHP 7.1') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-nginx-7.1'
sh 'make push-nginx-7.1'
}
}
stage('Apache PHP 7.1') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-apache-7.1'
}
}
stage('Apache PHP 7.1') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-apache-7.1'
sh 'make push-apache-7.1'
}
}
stage('CLI PHP 7.2') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-cli-7.2'
}
}
stage('CLI PHP 7.2') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-cli-7.2'
sh 'make push-cli-7.2'
}
}
stage('Nginx PHP 7.2') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-nginx-7.2'
}
}
stage('Nginx PHP 7.2') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-nginx-7.2'
sh 'make push-nginx-7.2'
}
}
stage('Apache PHP 7.2') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-apache-7.2'
}
}
stage('Apache PHP 7.2') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-apache-7.2'
sh 'make push-apache-7.2'
}
}
stage('CLI PHP 7.3') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-cli-7.3'
}
}
stage('CLI PHP 7.3') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-cli-7.3'
sh 'make push-cli-7.3'
}
}
stage('Nginx PHP 7.3') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-nginx-7.3'
}
}
stage('Nginx PHP 7.3') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-nginx-7.3'
sh 'make push-nginx-7.3'
}
}
stage('Apache PHP 7.3') {
agent { node { label 'x86' } }
when { not { branch 'master' } }
steps {
sh 'make build-php-apache-7.3'
}
}
stage('Apache PHP 7.3') {
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make build-php-apache-7.3'
sh 'make push-apache-7.3'
}
}
}
}
stage('Test Containers'){
parallel {
stage('All Nginx Containers'){
agent { node { label 'x86' } }
steps {
sh 'make test-php-nginx-5.6'
sh 'make test-php-nginx-7.0'
sh 'make test-php-nginx-7.1'
sh 'make test-php-nginx-7.2'
sh 'make test-php-nginx-7.3'
}
}
stage('All Apache Containers'){
agent { node { label 'x86' } }
steps {
sh 'make test-php-apache-5.6'
sh 'make test-php-apache-7.0'
sh 'make test-php-apache-7.1'
sh 'make test-php-apache-7.2'
sh 'make test-php-apache-7.3'
}
}
}
}
stage('Aliases'){
agent { node { label 'x86' } }
when { branch 'master' }
steps {
sh 'make aliases'
}
}
}
post {
success{
telegramSend "Pipeline SUCCESS: `${env.JOB_NAME}`\n\nAuthor: `${env.GIT_AUTHOR_NAME} <${env.GIT_AUTHOR_EMAIL}>`\nBuild Number: ${env.BUILD_NUMBER}\n\n${env.RUN_DISPLAY_URL}"
}
aborted{
telegramSend "Pipeline ABORTED: `${env.JOB_NAME}`\n\nAuthor: `${env.GIT_AUTHOR_NAME} <${env.GIT_AUTHOR_EMAIL}>`\nBuild Number: ${env.BUILD_NUMBER}\n\n${env.RUN_DISPLAY_URL}"
}
failure{
telegramSend "Pipeline FAIL: `${env.JOB_NAME}`\n\nAuthor: `${env.GIT_AUTHOR_NAME} <${env.GIT_AUTHOR_EMAIL}>`\nBuild Number: ${env.BUILD_NUMBER}\n\n${env.RUN_DISPLAY_URL}"
}
cleanup {
sh 'make cleanup'
cleanWs()
}
}
}

603
Makefile
View file

@ -1,603 +0,0 @@
DATE=`date +%Y-%m-%d`
ARCH = x86
BASEIMAGE=ubuntu:bionic
PHUSION_VERSION=0.11
SHELL := /bin/bash
print-% : ; @echo $* = $($*)
all:
$(MAKE) purge
$(MAKE) prepare
$(MAKE) build
$(MAKE) docs
$(MAKE) push
purge:
docker system prune -af
prepare:
git rev-parse --short HEAD > marshall/marshall_version
date +%Y-%m-%d\ %H:%M:%S > marshall/marshall_build_date
hostname > marshall/marshall_build_host
cleanup:
-docker rmi $(docker image ls | grep gone/php | sed 's/ \+ /\t/g' | cut -d$'\t' -f2 | grep -v "<none>" | xargs -n1 echo "gone/php:" | sed 's/ //g')
-docker rmi $(docker image ls | grep gone/node | sed 's/ \+ /\t/g' | cut -d$'\t' -f2 | grep -v "<none>" | xargs -n1 echo "gone/node:" | sed 's/ //g')
build-base: prepare build-marshall
build-marshall:
docker build --pull -t gone/marshall:latest -f ./marshall/Dockerfile ./marshall
docker tag gone/marshall:latest gone/marshall:$(DATE)
docker tag gone/marshall:latest gone/marshall:$(ARCH)
docker tag gone/marshall:latest gone/marshall:$(ARCH)-$(DATE)
build-php-core-5.6:
docker build --pull -t gone/php:core-5.6 -f ./php-core/Dockerfile.php56 ./php-core
docker tag gone/php:core-5.6 gone/php:core-5.6-$(ARCH)
docker tag gone/php:core-5.6 gone/php:core-5.6-$(ARCH)-$(DATE)
build-php-core-7.0:
docker build --pull -t gone/php:core-7.0 -f ./php-core/Dockerfile.php70 ./php-core
docker tag gone/php:core-7.0 gone/php:core-7.0-$(ARCH)
docker tag gone/php:core-7.0 gone/php:core-7.0-$(ARCH)-$(DATE)
build-php-core-7.1:
docker build --pull -t gone/php:core-7.1 -f ./php-core/Dockerfile.php71 ./php-core
docker tag gone/php:core-7.1 gone/php:core-7.1-$(ARCH)
docker tag gone/php:core-7.1 gone/php:core-7.1-$(ARCH)-$(DATE)
build-php-core-7.2:
docker build --pull -t gone/php:core-7.2 -f ./php-core/Dockerfile.php72 ./php-core
docker tag gone/php:core-7.2 gone/php:core-7.2-$(ARCH)
docker tag gone/php:core-7.2 gone/php:core-7.2-$(ARCH)-$(DATE)
build-php-core-7.3:
docker build --pull -t gone/php:core-7.3 -f ./php-core/Dockerfile.php73 ./php-core
docker tag gone/php:core-7.3 gone/php:core-7.3-$(ARCH)
docker tag gone/php:core-7.3 gone/php:core-7.3-$(ARCH)-$(DATE)
tag-php-core:
docker tag gone/php:core-7.3 gone/php:core-$(ARCH)
docker tag gone/php:core-7.3 gone/php:core
build-php-core: build-php-core-5.6 build-php-core-7.0 build-php-core-7.1 build-php-core-7.2 build-php-core-7.3 tag-php-core
build-php-cli-5.6:
sed 's|FROM .*|FROM gone/php:core-5.6|g' ./php+cli/Dockerfile > ./php+cli/Dockerfile.php56
docker build --pull -t gone/php:cli-php5.6 -f ./php+cli/Dockerfile.php56 ./php+cli
docker tag gone/php:cli-php5.6 gone/php:cli-php5.6-$(ARCH)
docker tag gone/php:cli-php5.6 gone/php:cli-php5.6-$(ARCH)-$(DATE)
rm ./php+cli/Dockerfile.php56
build-php-cli-7.0:
sed 's|FROM .*|FROM gone/php:core-7.0|g' ./php+cli/Dockerfile > ./php+cli/Dockerfile.php70
docker build --pull -t gone/php:cli-php7.0 -f ./php+cli/Dockerfile.php70 ./php+cli
docker tag gone/php:cli-php7.0 gone/php:cli-php7.0-$(ARCH)
docker tag gone/php:cli-php7.0 gone/php:cli-php7.0-$(ARCH)-$(DATE)
rm ./php+cli/Dockerfile.php70
build-php-cli-7.1:
sed 's|FROM .*|FROM gone/php:core-7.1|g' ./php+cli/Dockerfile > ./php+cli/Dockerfile.php71
docker build --pull -t gone/php:cli-php7.1 -f ./php+cli/Dockerfile.php71 ./php+cli
docker tag gone/php:cli-php7.1 gone/php:cli-php7.1-$(ARCH)
docker tag gone/php:cli-php7.1 gone/php:cli-php7.1-$(ARCH)-$(DATE)
rm ./php+cli/Dockerfile.php71
build-php-cli-7.2:
sed 's|FROM .*|FROM gone/php:core-7.2|g' ./php+cli/Dockerfile > ./php+cli/Dockerfile.php72
docker build --pull -t gone/php:cli-php7.2 -f ./php+cli/Dockerfile.php72 ./php+cli
docker tag gone/php:cli-php7.2 gone/php:cli-php7.2-$(ARCH)
docker tag gone/php:cli-php7.2 gone/php:cli-php7.2-$(ARCH)-$(DATE)
rm ./php+cli/Dockerfile.php72
build-php-cli-7.3:
sed 's|FROM .*|FROM gone/php:core-7.3|g' ./php+cli/Dockerfile > ./php+cli/Dockerfile.php73
docker build --pull -t gone/php:cli-php7.3 -f ./php+cli/Dockerfile.php73 ./php+cli
docker tag gone/php:cli-php7.3 gone/php:cli-php7.3-$(ARCH)
docker tag gone/php:cli-php7.3 gone/php:cli-php7.3-$(ARCH)-$(DATE)
rm ./php+cli/Dockerfile.php73
build-php-cli: build-php-cli-7.0 build-php-cli-7.1 build-php-cli-7.2 build-php-cli-7.3 tag-php-cli
build-php-apache-5.6:
sed 's|FROM .*|FROM gone/php:core-5.6|g' ./php+apache/Dockerfile > ./php+apache/Dockerfile.php56
sed -i 's/{{PHPVERSION}}/5.6/g' ./php+apache/Dockerfile.php56
docker build --pull -t gone/php:apache-php5.6 -f ./php+apache/Dockerfile.php56 ./php+apache
docker tag gone/php:apache-php5.6 gone/php:apache-php5.6-$(DATE)
docker tag gone/php:apache-php5.6 gone/php:apache-php5.6-$(ARCH)-$(DATE)
docker tag gone/php:apache-php5.6 gone/php:apache-php5.6-$(ARCH)
rm ./php+apache/Dockerfile.php56
build-php-apache-7.0:
sed 's|FROM .*|FROM gone/php:core-7.0|g' ./php+apache/Dockerfile > ./php+apache/Dockerfile.php70
sed -i 's/{{PHPVERSION}}/7.0/g' ./php+apache/Dockerfile.php70
docker build --pull -t gone/php:apache-php7.0 -f ./php+apache/Dockerfile.php70 ./php+apache
docker tag gone/php:apache-php7.0 gone/php:apache-php7.0-$(DATE)
docker tag gone/php:apache-php7.0 gone/php:apache-php7.0-$(ARCH)-$(DATE)
docker tag gone/php:apache-php7.0 gone/php:apache-php7.0-$(ARCH)
rm ./php+apache/Dockerfile.php70
build-php-apache-7.1:
sed 's|FROM .*|FROM gone/php:core-7.1|g' ./php+apache/Dockerfile > ./php+apache/Dockerfile.php71
sed -i 's/{{PHPVERSION}}/7.1/g' ./php+apache/Dockerfile.php71
docker build --pull -t gone/php:apache-php7.1 -f ./php+apache/Dockerfile.php71 ./php+apache
docker tag gone/php:apache-php7.1 gone/php:apache-php7.1-$(DATE)
docker tag gone/php:apache-php7.1 gone/php:apache-php7.1-$(ARCH)-$(DATE)
docker tag gone/php:apache-php7.1 gone/php:apache-php7.1-$(ARCH)
rm ./php+apache/Dockerfile.php71
build-php-apache-7.2:
sed 's|FROM .*|FROM gone/php:core-7.2|g' ./php+apache/Dockerfile > ./php+apache/Dockerfile.php72
sed -i 's/{{PHPVERSION}}/7.2/g' ./php+apache/Dockerfile.php72
docker build --pull -t gone/php:apache-php7.2 -f ./php+apache/Dockerfile.php72 ./php+apache
docker tag gone/php:apache-php7.2 gone/php:apache-php7.2-$(DATE)
docker tag gone/php:apache-php7.2 gone/php:apache-php7.2-$(ARCH)-$(DATE)
docker tag gone/php:apache-php7.2 gone/php:apache-php7.2-$(ARCH)
rm ./php+apache/Dockerfile.php72
build-php-apache-7.3:
sed 's|FROM .*|FROM gone/php:core-7.3|g' ./php+apache/Dockerfile > ./php+apache/Dockerfile.php73
sed -i 's/{{PHPVERSION}}/7.3/g' ./php+apache/Dockerfile.php73
docker build --pull -t gone/php:apache-php7.3 -f ./php+apache/Dockerfile.php73 ./php+apache
docker tag gone/php:apache-php7.3 gone/php:apache-php7.3-$(DATE)
docker tag gone/php:apache-php7.3 gone/php:apache-php7.3-$(ARCH)-$(DATE)
docker tag gone/php:apache-php7.3 gone/php:apache-php7.3-$(ARCH)
rm ./php+apache/Dockerfile.php73
tag-apache:
docker run gone/php:apache-php7.0 php --version | head -n1 | cut -d ' ' -f2 | cut -d '+' -f1
docker run gone/php:apache-php7.1 php --version | head -n1 | cut -d ' ' -f2 | cut -d '+' -f1
docker run gone/php:apache-php7.2 php --version | head -n1 | cut -d ' ' -f2 | cut -d '+' -f1
docker run gone/php:apache-php7.3 php --version | head -n1 | cut -d ' ' -f2 | cut -d '+' -f1
docker tag gone/php:apache-php7.3 gone/php:apache-$(ARCH)-$(DATE)
docker tag gone/php:apache-php7.3 gone/php:apache-$(ARCH)
docker tag gone/php:apache-php7.3 gone/php:apache
test-php-apache-5.6:
docker-compose -f test.yml -p apache56 up -d apache-php56-instance
sleep 5;
docker-compose -f test.yml -p apache56 run apache-php56-test | grep "Requests per second"
docker-compose -f test.yml -p apache56 down -v;
test-php-apache-7.0:
docker-compose -f test.yml -p apache70 up -d apache-php70-instance
sleep 5;
docker-compose -f test.yml -p apache70 run apache-php70-test | grep "Requests per second"
docker-compose -f test.yml -p apache70 down -v;
test-php-apache-7.1:
docker-compose -f test.yml -p apache71 up -d apache-php71-instance
sleep 5;
docker-compose -f test.yml -p apache71 run apache-php71-test | grep "Requests per second"
docker-compose -f test.yml -p apache71 down -v;
test-php-apache-7.2:
docker-compose -f test.yml -p apache72 up -d apache-php72-instance
sleep 5;
docker-compose -f test.yml -p apache72 run apache-php72-test | grep "Requests per second"
docker-compose -f test.yml -p apache72 down -v;
test-php-apache-7.3:
docker-compose -f test.yml -p apache73 up -d apache-php73-instance
sleep 5;
docker-compose -f test.yml -p apache73 run apache-php73-test | grep "Requests per second"
docker-compose -f test.yml -p apache73 down -v;
build-php-apache: build-php-apache-5.6 build-php-apache-7.0 build-php-apache-7.1 build-php-apache-7.2 build-php-apache-7.3 tag-apache
build-php-nginx-5.6:
sed 's|FROM .*|FROM gone/php:core-5.6|g' ./php+nginx/Dockerfile > ./php+nginx/Dockerfile.php56
sed -i 's/{{PHPVERSION}}/5.6/g' ./php+nginx/Dockerfile.php56
sed 's/{{PHPVERSION}}/5.6/g' ./php+nginx/configure-nginx.sh > ./php+nginx/configure-nginx.php5.6.sh
docker build --pull -t gone/php:nginx-php5.6 -f ./php+nginx/Dockerfile.php56 ./php+nginx
docker tag gone/php:nginx-php5.6 gone/php:nginx-php5.6-$(DATE)
docker tag gone/php:nginx-php5.6 gone/php:nginx-php5.6-$(ARCH)-$(DATE)
docker tag gone/php:nginx-php5.6 gone/php:nginx-php5.6-$(ARCH)
rm ./php+nginx/Dockerfile.php56
build-php-nginx-7.0:
sed 's|FROM .*|FROM gone/php:core-7.0|g' ./php+nginx/Dockerfile > ./php+nginx/Dockerfile.php70
sed -i 's/{{PHPVERSION}}/7.0/g' ./php+nginx/Dockerfile.php70
sed 's/{{PHPVERSION}}/7.0/g' ./php+nginx/configure-nginx.sh > ./php+nginx/configure-nginx.php7.0.sh
docker build --pull -t gone/php:nginx-php7.0 -f ./php+nginx/Dockerfile.php70 ./php+nginx
docker tag gone/php:nginx-php7.0 gone/php:nginx-php7.0-$(DATE)
docker tag gone/php:nginx-php7.0 gone/php:nginx-php7.0-$(ARCH)-$(DATE)
docker tag gone/php:nginx-php7.0 gone/php:nginx-php7.0-$(ARCH)
rm ./php+nginx/Dockerfile.php70
build-php-nginx-7.1:
sed 's|FROM .*|FROM gone/php:core-7.1|g' ./php+nginx/Dockerfile > ./php+nginx/Dockerfile.php71
sed -i 's/{{PHPVERSION}}/7.1/g' ./php+nginx/Dockerfile.php71
sed 's/{{PHPVERSION}}/7.1/g' ./php+nginx/configure-nginx.sh > ./php+nginx/configure-nginx.php7.1.sh
docker build --pull -t gone/php:nginx-php7.1 -f ./php+nginx/Dockerfile.php71 ./php+nginx
docker tag gone/php:nginx-php7.1 gone/php:nginx-php7.1-$(DATE)
docker tag gone/php:nginx-php7.1 gone/php:nginx-php7.1-$(ARCH)-$(DATE)
docker tag gone/php:nginx-php7.1 gone/php:nginx-php7.1-$(ARCH)
rm ./php+nginx/Dockerfile.php71
build-php-nginx-7.2:
sed 's|FROM .*|FROM gone/php:core-7.2|g' ./php+nginx/Dockerfile > ./php+nginx/Dockerfile.php72
sed -i 's/{{PHPVERSION}}/7.2/g' ./php+nginx/Dockerfile.php72
sed 's/{{PHPVERSION}}/7.2/g' ./php+nginx/configure-nginx.sh > ./php+nginx/configure-nginx.php7.2.sh
docker build --pull -t gone/php:nginx-php7.2 -f ./php+nginx/Dockerfile.php72 ./php+nginx
docker tag gone/php:nginx-php7.2 gone/php:nginx-php7.2-$(DATE)
docker tag gone/php:nginx-php7.2 gone/php:nginx-php7.2-$(ARCH)-$(DATE)
docker tag gone/php:nginx-php7.2 gone/php:nginx-php7.2-$(ARCH)
rm ./php+nginx/Dockerfile.php72
build-php-nginx-7.3:
sed 's|FROM .*|FROM gone/php:core-7.3|g' ./php+nginx/Dockerfile > ./php+nginx/Dockerfile.php73
sed -i 's/{{PHPVERSION}}/7.3/g' ./php+nginx/Dockerfile.php73
sed 's/{{PHPVERSION}}/7.3/g' ./php+nginx/configure-nginx.sh > ./php+nginx/configure-nginx.php7.3.sh
docker build --pull -t gone/php:nginx-php7.3 -f ./php+nginx/Dockerfile.php73 ./php+nginx
docker tag gone/php:nginx-php7.3 gone/php:nginx-php7.3-$(DATE)
docker tag gone/php:nginx-php7.3 gone/php:nginx-php7.3-$(ARCH)-$(DATE)
docker tag gone/php:nginx-php7.3 gone/php:nginx-php7.3-$(ARCH)
rm ./php+nginx/Dockerfile.php73
tag-nginx:
docker run gone/php:nginx-php5.6 php --version
docker run gone/php:nginx-php7.0 php --version
docker run gone/php:nginx-php7.1 php --version
docker run gone/php:nginx-php7.2 php --version
docker run gone/php:nginx-php7.3 php --version
docker tag gone/php:nginx-php7.3 gone/php:nginx-$(DATE)
docker tag gone/php:nginx-php7.3 gone/php:nginx-$(ARCH)-$(DATE)
docker tag gone/php:nginx-php7.3 gone/php:nginx-$(ARCH)
docker tag gone/php:nginx-php7.3 gone/php:nginx
test-php-nginx-5.6:
docker-compose -f test.yml -p nginx56 up -d nginx-php56-instance
sleep 5;
docker-compose -f test.yml -p nginx56 run nginx-php56-test | grep "Requests per second"
docker-compose -f test.yml -p nginx56 down -v;
test-php-nginx-7.0:
docker-compose -f test.yml -p nginx70 up -d nginx-php70-instance
sleep 5;
docker-compose -f test.yml -p nginx70 run nginx-php70-test | grep "Requests per second"
docker-compose -f test.yml -p nginx70 down -v;
test-php-nginx-7.1:
docker-compose -f test.yml -p nginx71 up -d nginx-php71-instance
sleep 5;
docker-compose -f test.yml -p nginx71 run nginx-php71-test | grep "Requests per second"
docker-compose -f test.yml -p nginx71 down -v;
test-php-nginx-7.2:
docker-compose -f test.yml -p nginx72 up -d nginx-php72-instance
sleep 5;
docker-compose -f test.yml -p nginx72 run nginx-php72-test | grep "Requests per second"
docker-compose -f test.yml -p nginx72 down -v;
test-php-nginx-7.3:
docker-compose -f test.yml -p nginx73 up -d nginx-php73-instance
sleep 5;
docker-compose -f test.yml -p nginx73 run nginx-php73-test | grep "Requests per second"
docker-compose -f test.yml -p nginx73 down -v;
build-php-nginx: build-php-nginx-5.6 build-php-nginx-7.0 build-php-nginx-7.1 build-php-nginx-7.2 build-php-nginx-7.3 tag-nginx
build-php-5.6: build-base build-php-core-5.6 build-php-cli-5.6 build-php-apache-5.6 build-php-nginx-5.6
build-php-7.0: build-base build-php-core-7.0 build-php-cli-7.0 build-php-apache-7.0 build-php-nginx-7.0
build-php-7.1: build-base build-php-core-7.1 build-php-cli-7.1 build-php-apache-7.1 build-php-nginx-7.1
build-php-7.2: build-base build-php-core-7.2 build-php-cli-7.2 build-php-apache-7.2 build-php-nginx-7.2
build-php-7.3: build-base build-php-core-7.3 build-php-cli-7.3 build-php-apache-7.3 build-php-nginx-7.3
build-node-8:
cp ./nodejs/Dockerfile ./nodejs/Dockerfile.node8
sed -i 's/{{NODE_VERSION}}/8\.16\.0/g' ./nodejs/Dockerfile.node8
sed -i 's/{{YARN_VERSION}}/1\.15\.2/g' ./nodejs/Dockerfile.node8
docker build --pull --target nodejs -t gone/node:8 -f ./nodejs/Dockerfile.node8 ./nodejs
docker build --pull --target nodejs-onbuild -t gone/node:8-onbuild -f ./nodejs/Dockerfile.node8 ./nodejs
docker build --pull --target nodejs-compiler -t gone/node:8-gcc -f ./nodejs/Dockerfile.node8 ./nodejs
docker build --pull --target nodejs-compiler-onbuild -t gone/node:8-gcc-onbuild -f ./nodejs/Dockerfile.node8 ./nodejs
build-node-10:
cp ./nodejs/Dockerfile ./nodejs/Dockerfile.node10
sed -i 's/{{NODE_VERSION}}/10\.16\.0/g' ./nodejs/Dockerfile.node10
sed -i 's/{{YARN_VERSION}}/1\.16\.0/g' ./nodejs/Dockerfile.node10
docker build --pull --target nodejs -t gone/node:10 -f ./nodejs/Dockerfile.node10 ./nodejs
docker build --pull --target nodejs-onbuild -t gone/node:10-onbuild -f ./nodejs/Dockerfile.node10 ./nodejs
docker build --pull --target nodejs-compiler -t gone/node:10-gcc -f ./nodejs/Dockerfile.node10 ./nodejs
docker build --pull --target nodejs-compiler-onbuild -t gone/node:10-gcc-onbuild -f ./nodejs/Dockerfile.node10 ./nodejs
build-node-11:
cp ./nodejs/Dockerfile ./nodejs/Dockerfile.node11
sed -i 's/{{NODE_VERSION}}/11\.15\.0/g' ./nodejs/Dockerfile.node11
sed -i 's/{{YARN_VERSION}}/1\.16\.0/g' ./nodejs/Dockerfile.node11
docker build --pull --target nodejs -t gone/node:11 -f ./nodejs/Dockerfile.node11 ./nodejs
docker build --pull --target nodejs-onbuild -t gone/node:11-onbuild -f ./nodejs/Dockerfile.node11 ./nodejs
docker build --pull --target nodejs-compiler -t gone/node:11-gcc -f ./nodejs/Dockerfile.node11 ./nodejs
docker build --pull --target nodejs-compiler-onbuild -t gone/node:11-gcc-onbuild -f ./nodejs/Dockerfile.node11 ./nodejs
build-node-12:
cp ./nodejs/Dockerfile ./nodejs/Dockerfile.node12
sed -i 's/{{NODE_VERSION}}/12\.3\.1/g' ./nodejs/Dockerfile.node12
sed -i 's/{{YARN_VERSION}}/1\.16\.0/g' ./nodejs/Dockerfile.node12
docker build --pull --target nodejs -t gone/node:12 -f ./nodejs/Dockerfile.node12 ./nodejs
docker build --pull --target nodejs-onbuild -t gone/node:12-onbuild -f ./nodejs/Dockerfile.node12 ./nodejs
docker build --pull --target nodejs-compiler -t gone/node:12-gcc -f ./nodejs/Dockerfile.node12 ./nodejs
docker build --pull --target nodejs-compiler-onbuild -t gone/node:12-gcc-onbuild -f ./nodejs/Dockerfile.node12 ./nodejs
build-node: build-node-8 build-node-10 build-node-11 build-node-12
tag-node: tag-node-8 tag-node-10 tag-node-11 tag-node-12
tag-node-8:
docker tag gone/node:8 gone/node:8-$(DATE)
docker tag gone/node:8 gone/node:8-$(ARCH)-$(DATE)
docker tag gone/node:8 gone/node:8-$(ARCH)
docker tag gone/node:8-onbuild gone/node:8-onbuild-$(DATE)
docker tag gone/node:8-onbuild gone/node:8-onbuild-$(ARCH)-$(DATE)
docker tag gone/node:8-onbuild gone/node:8-onbuild-$(ARCH)
docker tag gone/node:8-gcc gone/node:8-gcc-$(DATE)
docker tag gone/node:8-gcc gone/node:8-gcc-$(ARCH)-$(DATE)
docker tag gone/node:8-gcc gone/node:8-gcc-$(ARCH)
docker tag gone/node:8-gcc-onbuild gone/node:8-gcc-onbuild-$(DATE)
docker tag gone/node:8-gcc-onbuild gone/node:8-gcc-onbuild-$(ARCH)-$(DATE)
docker tag gone/node:8-gcc-onbuild gone/node:8-gcc-onbuild-$(ARCH)
tag-node-10:
docker tag gone/node:10 gone/node:10-$(DATE)
docker tag gone/node:10 gone/node:10-$(ARCH)-$(DATE)
docker tag gone/node:10 gone/node:10-$(ARCH)
docker tag gone/node:10-onbuild gone/node:10-onbuild-$(DATE)
docker tag gone/node:10-onbuild gone/node:10-onbuild-$(ARCH)-$(DATE)
docker tag gone/node:10-onbuild gone/node:10-onbuild-$(ARCH)
docker tag gone/node:10-gcc gone/node:10-gcc-$(DATE)
docker tag gone/node:10-gcc gone/node:10-gcc-$(ARCH)-$(DATE)
docker tag gone/node:10-gcc gone/node:10-gcc-$(ARCH)
docker tag gone/node:10-gcc-onbuild gone/node:10-gcc-onbuild-$(DATE)
docker tag gone/node:10-gcc-onbuild gone/node:10-gcc-onbuild-$(ARCH)-$(DATE)
docker tag gone/node:10-gcc-onbuild gone/node:10-gcc-onbuild-$(ARCH)
tag-node-11:
docker tag gone/node:11 gone/node:11-$(DATE)
docker tag gone/node:11 gone/node:11-$(ARCH)-$(DATE)
docker tag gone/node:11 gone/node:11-$(ARCH)
docker tag gone/node:11-onbuild gone/node:11-onbuild-$(DATE)
docker tag gone/node:11-onbuild gone/node:11-onbuild-$(ARCH)-$(DATE)
docker tag gone/node:11-onbuild gone/node:11-onbuild-$(ARCH)
docker tag gone/node:11-gcc gone/node:11-gcc-$(DATE)
docker tag gone/node:11-gcc gone/node:11-gcc-$(ARCH)-$(DATE)
docker tag gone/node:11-gcc gone/node:11-gcc-$(ARCH)
docker tag gone/node:11-gcc-onbuild gone/node:11-gcc-onbuild-$(DATE)
docker tag gone/node:11-gcc-onbuild gone/node:11-gcc-onbuild-$(ARCH)-$(DATE)
docker tag gone/node:11-gcc-onbuild gone/node:11-gcc-onbuild-$(ARCH)
tag-node-12:
docker tag gone/node:12 gone/node:12-$(DATE)
docker tag gone/node:12 gone/node:12-$(ARCH)-$(DATE)
docker tag gone/node:12 gone/node:12-$(ARCH)
docker tag gone/node:12-onbuild gone/node:12-onbuild-$(DATE)
docker tag gone/node:12-onbuild gone/node:12-onbuild-$(ARCH)-$(DATE)
docker tag gone/node:12-onbuild gone/node:12-onbuild-$(ARCH)
docker tag gone/node:12-gcc gone/node:12-gcc-$(DATE)
docker tag gone/node:12-gcc gone/node:12-gcc-$(ARCH)-$(DATE)
docker tag gone/node:12-gcc gone/node:12-gcc-$(ARCH)
docker tag gone/node:12-gcc-onbuild gone/node:12-gcc-onbuild-$(DATE)
docker tag gone/node:12-gcc-onbuild gone/node:12-gcc-onbuild-$(ARCH)-$(DATE)
docker tag gone/node:12-gcc-onbuild gone/node:12-gcc-onbuild-$(ARCH)
build:
$(MAKE) prepare
$(MAKE) build-marshall
$(MAKE) build-php-5.6
$(MAKE) build-php-7.0
$(MAKE) build-php-7.1
$(MAKE) build-php-7.2
$(MAKE) build-php-7.3
$(MAKE) build-node
push-marshall:
docker push gone/marshall:latest
docker push gone/marshall:$(DATE)
docker push gone/marshall:$(ARCH)
docker push gone/marshall:$(ARCH)-$(DATE)
push-core-5.6:
docker push gone/php:core-5.6-$(ARCH)-$(DATE)
docker push gone/php:core-5.6-$(ARCH)
docker push gone/php:core-5.6
push-core-7.0:
docker push gone/php:core-7.0-$(ARCH)-$(DATE)
docker push gone/php:core-7.0-$(ARCH)
docker push gone/php:core-7.0
push-core-7.1:
docker push gone/php:core-7.1-$(ARCH)-$(DATE)
docker push gone/php:core-7.1-$(ARCH)
docker push gone/php:core-7.1
push-core-7.2:
docker push gone/php:core-7.2-$(ARCH)-$(DATE)
docker push gone/php:core-7.2-$(ARCH)
docker push gone/php:core-7.2
push-core-7.3:
docker push gone/php:core-7.3-$(ARCH)-$(DATE)
docker push gone/php:core-7.3-$(ARCH)
docker push gone/php:core-7.3
push-cli-5.6:
docker push gone/php:cli-php5.6-$(ARCH)-$(DATE)
docker push gone/php:cli-php5.6-$(ARCH)
docker push gone/php:cli-php5.6
push-cli-7.0:
docker push gone/php:cli-php7.0-$(ARCH)-$(DATE)
docker push gone/php:cli-php7.0-$(ARCH)
docker push gone/php:cli-php7.0
push-cli-7.1:
docker push gone/php:cli-php7.1-$(ARCH)-$(DATE)
docker push gone/php:cli-php7.1-$(ARCH)
docker push gone/php:cli-php7.1
push-cli-7.2:
docker push gone/php:cli-php7.2-$(ARCH)-$(DATE)
docker push gone/php:cli-php7.2-$(ARCH)
docker push gone/php:cli-php7.2
push-cli-7.3:
docker push gone/php:cli-php7.3-$(ARCH)-$(DATE)
docker push gone/php:cli-php7.3-$(ARCH)
docker push gone/php:cli-php7.3
push-apache-5.6:
docker push gone/php:apache-php5.6-$(ARCH)-$(DATE)
docker push gone/php:apache-php5.6-$(ARCH)
docker push gone/php:apache-php5.6
push-apache-7.0:
docker push gone/php:apache-php7.0-$(ARCH)-$(DATE)
docker push gone/php:apache-php7.0-$(ARCH)
docker push gone/php:apache-php7.0
push-apache-7.1:
docker push gone/php:apache-php7.1-$(ARCH)-$(DATE)
docker push gone/php:apache-php7.1-$(ARCH)
docker push gone/php:apache-php7.1
push-apache-7.2:
docker push gone/php:apache-php7.2-$(ARCH)-$(DATE)
docker push gone/php:apache-php7.2-$(ARCH)
docker push gone/php:apache-php7.2
push-apache-7.3:
docker push gone/php:apache-php7.3-$(ARCH)-$(DATE)
docker push gone/php:apache-php7.3-$(ARCH)
docker push gone/php:apache-php7.3
push-nginx-5.6:
docker push gone/php:nginx-php5.6-$(ARCH)-$(DATE)
docker push gone/php:nginx-php5.6-$(ARCH)
docker push gone/php:nginx-php5.6
push-nginx-7.0:
docker push gone/php:nginx-php7.0-$(ARCH)-$(DATE)
docker push gone/php:nginx-php7.0-$(ARCH)
docker push gone/php:nginx-php7.0
push-nginx-7.1:
docker push gone/php:nginx-php7.1-$(ARCH)-$(DATE)
docker push gone/php:nginx-php7.1-$(ARCH)
docker push gone/php:nginx-php7.1
push-nginx-7.2:
docker push gone/php:nginx-php7.2-$(ARCH)-$(DATE)
docker push gone/php:nginx-php7.2-$(ARCH)
docker push gone/php:nginx-php7.2
push-nginx-7.3:
docker push gone/php:nginx-php7.3-$(ARCH)-$(DATE)
docker push gone/php:nginx-php7.3-$(ARCH)
docker push gone/php:nginx-php7.3
push-node-8:
docker push gone/node:8
docker push gone/node:8-$(DATE)
docker push gone/node:8-$(ARCH)-$(DATE)
docker push gone/node:8-$(ARCH)
docker push gone/node:8-onbuild
docker push gone/node:8-onbuild-$(DATE)
docker push gone/node:8-onbuild-$(ARCH)-$(DATE)
docker push gone/node:8-onbuild-$(ARCH)
docker push gone/node:8-gcc
docker push gone/node:8-gcc-$(DATE)
docker push gone/node:8-gcc-$(ARCH)-$(DATE)
docker push gone/node:8-gcc-$(ARCH)
docker push gone/node:8-gcc-onbuild
docker push gone/node:8-gcc-onbuild-$(DATE)
docker push gone/node:8-gcc-onbuild-$(ARCH)-$(DATE)
docker push gone/node:8-gcc-onbuild-$(ARCH)
push-node-10:
docker push gone/node:10
docker push gone/node:10-$(DATE)
docker push gone/node:10-$(ARCH)-$(DATE)
docker push gone/node:10-$(ARCH)
docker push gone/node:10-onbuild
docker push gone/node:10-onbuild-$(DATE)
docker push gone/node:10-onbuild-$(ARCH)-$(DATE)
docker push gone/node:10-onbuild-$(ARCH)
docker push gone/node:10-gcc
docker push gone/node:10-gcc-$(DATE)
docker push gone/node:10-gcc-$(ARCH)-$(DATE)
docker push gone/node:10-gcc-$(ARCH)
docker push gone/node:10-gcc-onbuild
docker push gone/node:10-gcc-onbuild-$(DATE)
docker push gone/node:10-gcc-onbuild-$(ARCH)-$(DATE)
docker push gone/node:10-gcc-onbuild-$(ARCH)
push-node-11:
docker push gone/node:11
docker push gone/node:11-$(DATE)
docker push gone/node:11-$(ARCH)-$(DATE)
docker push gone/node:11-$(ARCH)
docker push gone/node:11-onbuild
docker push gone/node:11-onbuild-$(DATE)
docker push gone/node:11-onbuild-$(ARCH)-$(DATE)
docker push gone/node:11-onbuild-$(ARCH)
docker push gone/node:11-gcc
docker push gone/node:11-gcc-$(DATE)
docker push gone/node:11-gcc-$(ARCH)-$(DATE)
docker push gone/node:11-gcc-$(ARCH)
docker push gone/node:11-gcc-onbuild
docker push gone/node:11-gcc-onbuild-$(DATE)
docker push gone/node:11-gcc-onbuild-$(ARCH)-$(DATE)
docker push gone/node:11-gcc-onbuild-$(ARCH)
push-node-12:
docker push gone/node:12
docker push gone/node:12-$(DATE)
docker push gone/node:12-$(ARCH)-$(DATE)
docker push gone/node:12-$(ARCH)
docker push gone/node:12-onbuild
docker push gone/node:12-onbuild-$(DATE)
docker push gone/node:12-onbuild-$(ARCH)-$(DATE)
docker push gone/node:12-onbuild-$(ARCH)
docker push gone/node:12-gcc
docker push gone/node:12-gcc-$(DATE)
docker push gone/node:12-gcc-$(ARCH)-$(DATE)
docker push gone/node:12-gcc-$(ARCH)
docker push gone/node:12-gcc-onbuild
docker push gone/node:12-gcc-onbuild-$(DATE)
docker push gone/node:12-gcc-onbuild-$(ARCH)-$(DATE)
docker push gone/node:12-gcc-onbuild-$(ARCH)
push-core: push-core-5.6 push-core-7.0 push-core-7.1 push-core-7.2 push-core-7.3
push-cli: push-cli-5.6 push-cli-7.0 push-cli-7.1 push-cli-7.2 push-cli-7.3
push-apache: push-apache-5.6 push-apache-7.0 push-apache-7.1 push-apache-7.2 push-apache-7.3
push-nginx: push-nginx-5.6 push-nginx-7.0 push-nginx-7.1 push-nginx-7.2 push-nginx-7.3
push-node: push-node-8 push-node-10 push-node-11 push-node-12
push: push-marshall push-core push-cli push-apache push-nginx push-node
aliases:
docker pull gone/php:cli-php7.3
docker pull gone/php:nginx-php7.3
docker pull gone/php:apache-php7.3
docker pull gone/node:12
docker tag gone/php:cli-php7.3 gone/php:cli
docker tag gone/php:nginx-php7.3 gone/php:nginx
docker tag gone/php:apache-php7.3 gone/php:apache
docker tag gone/node:12 gone/node:latest
docker push gone/php:cli
docker push gone/php:nginx
docker push gone/php:apache
docker push gone/node:latest
readme:
./docs
git add README.md
git commit -m "Updated Readme with new docs" README.md
git push
release: build readme push cleanup

View file

@ -1,4 +0,0 @@
# Gone.io Docker Base
Docker PHP Base kit based on phusion/baseimage, featuring PHP %%Php_Version%%
%%Availability_Table%%

542
build.yml Normal file
View file

@ -0,0 +1,542 @@
version: '2.4'
services:
marshall:
image: gone/marshall
build:
context: .
target: marshall
node-8:
image: gone/node:8
build:
context: .
target: nodejs
args:
NODE_VERSION: 8.16.0
YARN_VERSION: 1.15.2
node-8-onbuild:
extends:
service: node-8
image: gone/node:8-onbuild
build:
target: nodejs-onbuild
node-8-gcc:
extends:
service: node-8
image: gone/node:8-gcc
build:
target: nodejs-gcc
node-8-gcc-onbuild:
extends:
service: node-8-gcc
image: gone/node:8-gcc-onbuild
build:
target: nodejs-gcc-onbuild
node-10:
image: gone/node:10
build:
context: .
target: nodejs
args:
NODE_VERSION: 8.16.0
YARN_VERSION: 1.15.2
node-10-onbuild:
extends:
service: node-10
image: gone/node:10-onbuild
build:
target: nodejs-onbuild
node-10-gcc:
extends:
service: node-10
image: gone/node:10-gcc
build:
target: nodejs-gcc
node-10-gcc-onbuild:
extends:
service: node-10-gcc
image: gone/node:10-gcc-onbuild
build:
target: nodejs-gcc-onbuild
node-11:
image: gone/node:11
build:
context: .
target: nodejs
args:
NODE_VERSION: 8.16.0
YARN_VERSION: 1.15.2
node-11-onbuild:
extends:
service: node-11
image: gone/node:11-onbuild
build:
target: nodejs-onbuild
node-11-gcc:
extends:
service: node-11
image: gone/node:11-gcc
build:
target: nodejs-gcc
node-11-gcc-onbuild:
extends:
service: node-11-gcc
image: gone/node:11-gcc-onbuild
build:
target: nodejs-gcc-onbuild
node-12:
image: gone/node:12
build:
context: .
target: nodejs
args:
NODE_VERSION: 8.16.0
YARN_VERSION: 1.15.2
node-12-onbuild:
extends:
service: node-12
image: gone/node:12-onbuild
build:
target: nodejs-onbuild
node-12-gcc:
extends:
service: node-12
image: gone/node:12-gcc
build:
target: nodejs-gcc
node-12-gcc-onbuild:
extends:
service: node-12-gcc
image: gone/node:12-gcc-onbuild
build:
target: nodejs-gcc-onbuild
php-core-56:
image: gone/php:core-5.6
build:
context: .
target: php-core
args:
PHP_VERSION: 5.6
PHP_PACKAGES:
mysql-client
php-apcu
php-xdebug
php5.6-bcmath
php5.6-bz2
php5.6-cli
php5.6-curl
php5.6-gd
php5.6-imap
php5.6-intl
php5.6-json
php5.6-ldap
php5.6-mbstring
php5.6-mcrypt
php5.6-memcache
php5.6-memcached
php5.6-mongodb
php5.6-mysql
php5.6-opcache
php5.6-pgsql
php5.6-pspell
php5.6-redis
php5.6-soap
php5.6-sqlite
php5.6-xml
php5.6-zip
postgresql-client
php-core-70:
image: gone/php:core-7.0
build:
context: .
target: php-core
args:
PHP_VERSION: 7.0
PHP_PACKAGES:
mysql-client
php-apcu
php-xdebug
php7.0-bcmath
php7.0-bz2
php7.0-cli
php7.0-curl
php7.0-gd
php7.0-imap
php7.0-intl
php7.0-json
php7.0-ldap
php7.0-mbstring
php7.0-mcrypt
php7.0-memcache
php7.0-memcached
php7.0-mongodb
php7.0-mysql
php7.0-opcache
php7.0-pgsql
php7.0-pspell
php7.0-redis
php7.0-soap
php7.0-sqlite
php7.0-xml
php7.0-zip
postgresql-client
php-core-71:
image: gone/php:core-7.1
build:
context: .
target: php-core
args:
PHP_VERSION: 7.1
PHP_PACKAGES:
mysql-client
php-apcu
php-xdebug
php7.1-bcmath
php7.1-bz2
php7.1-cli
php7.1-curl
php7.1-gd
php7.1-imap
php7.1-intl
php7.1-json
php7.1-ldap
php7.1-mbstring
php7.1-mcrypt
php7.1-memcache
php7.1-memcached
php7.1-mongodb
php7.1-mysql
php7.1-opcache
php7.1-pgsql
php7.1-pspell
php7.1-redis
php7.1-soap
php7.1-sqlite
php7.1-xml
php7.1-zip
postgresql-client
php-core-72:
image: gone/php:core-7.2
build:
context: .
target: php-core
args:
PHP_VERSION: 7.2
PHP_PACKAGES:
mysql-client
php-apcu
php-xdebug
php7.2-bcmath
php7.2-bz2
php7.2-cli
php7.2-curl
php7.2-gd
php7.2-imap
php7.2-intl
php7.2-json
php7.2-ldap
php7.2-mbstring
php7.2-memcache
php7.2-memcached
php7.2-mongodb
php7.2-mysql
php7.2-opcache
php7.2-pgsql
php7.2-pspell
php7.2-redis
php7.2-soap
php7.2-sqlite
php7.2-xml
php7.2-zip
postgresql-client
php-core-73:
image: gone/php:core-7.3
build:
context: .
target: php-core
args:
PHP_VERSION: 7.3
PHP_PACKAGES:
mysql-client
php-apcu
php-xdebug
php7.3-bcmath
php7.3-bz2
php7.3-cli
php7.3-curl
php7.3-gd
php7.3-imap
php7.3-intl
php7.3-json
php7.3-ldap
php7.3-mbstring
php7.3-memcache
php7.3-memcached
php7.3-mongodb
php7.3-mysql
php7.3-opcache
php7.3-pgsql
php7.3-pspell
php7.3-redis
php7.3-soap
php7.3-sqlite
php7.3-xml
php7.3-zip
postgresql-client
php-cli-56:
extends:
service: php-core-56
image: gone/php:cli-5.6
build:
context: .
target: php-cli
php-cli-56-onbuild:
extends:
service: php-core-56
image: gone/php:cli-5.6-onbuild
build:
context: .
target: php-cli-onbuild
php-cli-70:
extends:
service: php-core-70
image: gone/php:cli-7.0
build:
context: .
target: php-cli
php-cli-70-onbuild:
extends:
service: php-core-70
image: gone/php:cli-7.0-onbuild
build:
context: .
target: php-cli-onbuild
php-cli-71:
extends:
service: php-core-71
image: gone/php:cli-7.1
build:
context: .
target: php-cli
php-cli-71-onbuild:
extends:
service: php-core-71
image: gone/php:cli-7.1-onbuild
build:
context: .
target: php-cli-onbuild
php-cli-72:
extends:
service: php-core-72
image: gone/php:cli-7.2
build:
context: .
target: php-cli
php-cli-72-onbuild:
extends:
service: php-core-72
image: gone/php:cli-7.2-onbuild
build:
context: .
target: php-cli-onbuild
php-cli-73:
extends:
service: php-core-73
image: gone/php:cli-7.3
build:
context: .
target: php-cli
php-cli-73-onbuild:
extends:
service: php-core-73
image: gone/php:cli-7.3-onbuild
build:
context: .
target: php-cli-onbuild
php-apache-56:
extends:
service: php-core-56
image: gone/php:apache-5.6
build:
context: .
target: php-apache
php-apache-56-onbuild:
extends:
service: php-core-56
image: gone/php:apache-5.6-onbuild
build:
context: .
target: php-apache-onbuild
php-apache-70:
extends:
service: php-core-70
image: gone/php:apache-7.0
build:
context: .
target: php-apache
php-apache-70-onbuild:
extends:
service: php-core-70
image: gone/php:apache-7.0-onbuild
build:
context: .
target: php-apache-onbuild
php-apache-71:
extends:
service: php-core-71
image: gone/php:apache-7.1
build:
context: .
target: php-apache
php-apache-71-onbuild:
extends:
service: php-core-71
image: gone/php:apache-7.1-onbuild
build:
context: .
target: php-apache-onbuild
php-apache-72:
extends:
service: php-core-72
image: gone/php:apache-7.2
build:
context: .
target: php-apache
php-apache-72-onbuild:
extends:
service: php-core-72
image: gone/php:apache-7.2-onbuild
build:
context: .
target: php-apache-onbuild
php-apache-73:
extends:
service: php-core-73
image: gone/php:apache-7.3
build:
context: .
target: php-apache
php-apache-73-onbuild:
extends:
service: php-core-73
image: gone/php:apache-7.3-onbuild
build:
context: .
target: php-apache-onbuild
php-nginx-56:
extends:
service: php-core-56
image: gone/php:nginx-5.6
build:
context: .
target: php-nginx
php-nginx-56-onbuild:
extends:
service: php-core-56
image: gone/php:nginx-5.6-onbuild
build:
context: .
target: php-nginx-onbuild
php-nginx-70:
extends:
service: php-core-70
image: gone/php:nginx-7.0
build:
context: .
target: php-nginx
php-nginx-70-onbuild:
extends:
service: php-core-70
image: gone/php:nginx-7.0-onbuild
build:
context: .
target: php-nginx-onbuild
php-nginx-71:
extends:
service: php-core-71
image: gone/php:nginx-7.1
build:
context: .
target: php-nginx
php-nginx-71-onbuild:
extends:
service: php-core-71
image: gone/php:nginx-7.1-onbuild
build:
context: .
target: php-nginx-onbuild
php-nginx-72:
extends:
service: php-core-72
image: gone/php:nginx-7.2
build:
context: .
target: php-nginx
php-nginx-72-onbuild:
extends:
service: php-core-72
image: gone/php:nginx-7.2-onbuild
build:
context: .
target: php-nginx-onbuild
php-nginx-73:
extends:
service: php-core-73
image: gone/php:nginx-7.3
build:
context: .
target: php-nginx
php-nginx-73-onbuild:
extends:
service: php-core-73
image: gone/php:nginx-7.3-onbuild
build:
context: .
target: php-nginx-onbuild
node-latest:
extends:
service: node-12
image: gone/node:latest
node-onbuild-latest:
extends:
service: node-12
image: gone/node:onbuild
php-cli-latest:
extends:
service: php-cli-73
image: gone/php:cli
php-cli-onbuild-latest:
extends:
service: php-cli-73-onbuild
image: gone/php:cli-onbuild
php-apache-latest:
extends:
service: php-apache-73
image: gone/php:apache
php-apache-onbuild-latest:
extends:
service: php-apache-73-onbuild
image: gone/php:apache-onbuild
php-nginx-latest:
extends:
service: php-nginx-73
image: gone/php:nginx
php-nginx-onbuild-latest:
extends:
service: php-nginx-73-onbuild
image: gone/php:nginx-onbuild

1
doc/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
vendor

15
doc/composer.json Normal file
View file

@ -0,0 +1,15 @@
{
"name": "gone/base-image-doc-gen",
"type": "project",
"authors": [
{
"name": "Matthew Baggett",
"email": "matthew@baggett.me"
}
],
"require": {
"kint-php/kint": "^3.2",
"adambrett/shell-wrapper": "dev-master",
"react/child-process": "^0.6.1"
}
}

308
doc/composer.lock generated Normal file
View file

@ -0,0 +1,308 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "aa3efcb8e88c94b3a7b0d7729e3d9f96",
"packages": [
{
"name": "adambrett/shell-wrapper",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/adambrett/php-shell-wrapper.git",
"reference": "0ca9c254a547313d4990d11d8aca8da3fb647e6e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/adambrett/php-shell-wrapper/zipball/0ca9c254a547313d4990d11d8aca8da3fb647e6e",
"reference": "0ca9c254a547313d4990d11d8aca8da3fb647e6e",
"shasum": ""
},
"require-dev": {
"covex-nn/phpcb": "*@dev",
"fzaninotto/faker": "*@dev",
"mockery/mockery": "*@dev",
"pdepend/pdepend": "*@dev",
"phploc/phploc": "*@dev",
"phpmd/phpmd": "*@dev",
"phpunit/phpunit": "*@dev",
"sebastian/phpcpd": "*@dev",
"squizlabs/php_codesniffer": "*@dev"
},
"type": "library",
"autoload": {
"psr-4": {
"AdamBrett\\ShellWrapper\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BDS-3-Clause"
],
"authors": [
{
"name": "Adam Brett",
"email": "adam@adambrett.co.uk"
}
],
"description": "An object oriented wrapper for shell commands",
"time": "2017-02-16T16:57:56+00:00"
},
{
"name": "evenement/evenement",
"version": "v3.0.1",
"source": {
"type": "git",
"url": "https://github.com/igorw/evenement.git",
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
"reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7",
"shasum": ""
},
"require": {
"php": ">=7.0"
},
"require-dev": {
"phpunit/phpunit": "^6.0"
},
"type": "library",
"autoload": {
"psr-0": {
"Evenement": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Igor Wiedler",
"email": "igor@wiedler.ch"
}
],
"description": "Événement is a very simple event dispatching library for PHP",
"keywords": [
"event-dispatcher",
"event-emitter"
],
"time": "2017-07-23T21:35:13+00:00"
},
{
"name": "kint-php/kint",
"version": "3.2.2",
"source": {
"type": "git",
"url": "https://github.com/kint-php/kint.git",
"reference": "c332db9529fdce74ae6a347f97a1e7395e76ced8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/kint-php/kint/zipball/c332db9529fdce74ae6a347f97a1e7395e76ced8",
"reference": "c332db9529fdce74ae6a347f97a1e7395e76ced8",
"shasum": ""
},
"require": {
"php": ">=5.3.6"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.0",
"phpunit/phpunit": "^4.0",
"seld/phar-utils": "^1.0",
"symfony/finder": "^2.0 || ^3.0 || ^4.0",
"vimeo/psalm": "^3.0"
},
"suggest": {
"ext-ctype": "Simple data type tests",
"ext-iconv": "Provides fallback detection for ambiguous legacy string encodings such as the Windows and ISO 8859 code pages",
"ext-mbstring": "Provides string encoding detection",
"kint-php/kint-js": "Provides a simplified dump to console.log()",
"kint-php/kint-twig": "Provides d() and s() functions in twig templates",
"symfony/polyfill-ctype": "Replacement for ext-ctype if missing",
"symfony/polyfill-iconv": "Replacement for ext-iconv if missing",
"symfony/polyfill-mbstring": "Replacement for ext-mbstring if missing"
},
"type": "library",
"autoload": {
"files": [
"init.php"
],
"psr-4": {
"Kint\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Rokas Šleinius",
"homepage": "https://github.com/raveren"
},
{
"name": "Jonathan Vollebregt",
"homepage": "https://github.com/jnvsor"
},
{
"name": "Contributors",
"homepage": "https://github.com/kint-php/kint/graphs/contributors"
}
],
"description": "Kint - debugging tool for PHP developers",
"homepage": "https://kint-php.github.io/kint/",
"keywords": [
"debug",
"kint",
"php"
],
"time": "2019-05-03T16:49:16+00:00"
},
{
"name": "react/child-process",
"version": "v0.6.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/child-process.git",
"reference": "6895afa583d51dc10a4b9e93cd3bce17b3b77ac3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/child-process/zipball/6895afa583d51dc10a4b9e93cd3bce17b3b77ac3",
"reference": "6895afa583d51dc10a4b9e93cd3bce17b3b77ac3",
"shasum": ""
},
"require": {
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
"php": ">=5.3.0",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5",
"react/stream": "^1.0 || ^0.7.6"
},
"require-dev": {
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35",
"react/socket": "^1.0",
"sebastian/environment": "^3.0 || ^2.0 || ^1.0"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\ChildProcess\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Event-driven library for executing child processes with ReactPHP.",
"keywords": [
"event-driven",
"process",
"reactphp"
],
"time": "2019-02-15T13:48:16+00:00"
},
{
"name": "react/event-loop",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/event-loop.git",
"reference": "a0ecac955c67b57c40fe4a1b88a7cca1b58c982d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/event-loop/zipball/a0ecac955c67b57c40fe4a1b88a7cca1b58c982d",
"reference": "a0ecac955c67b57c40fe4a1b88a7cca1b58c982d",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35"
},
"suggest": {
"ext-event": "~1.0 for ExtEventLoop",
"ext-pcntl": "For signal handling support when using the StreamSelectLoop",
"ext-uv": "* for ExtUvLoop"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\EventLoop\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.",
"keywords": [
"asynchronous",
"event-loop"
],
"time": "2019-02-07T16:19:49+00:00"
},
{
"name": "react/stream",
"version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/stream.git",
"reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/stream/zipball/50426855f7a77ddf43b9266c22320df5bf6c6ce6",
"reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6",
"shasum": ""
},
"require": {
"evenement/evenement": "^3.0 || ^2.0 || ^1.0",
"php": ">=5.3.8",
"react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5"
},
"require-dev": {
"clue/stream-filter": "~1.2",
"phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35"
},
"type": "library",
"autoload": {
"psr-4": {
"React\\Stream\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP",
"keywords": [
"event-driven",
"io",
"non-blocking",
"pipe",
"reactphp",
"readable",
"stream",
"writable"
],
"time": "2019-01-01T16:15:09+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"adambrett/shell-wrapper": 20
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
}

131
doc/gen Executable file
View file

@ -0,0 +1,131 @@
#!/usr/bin/php
<?php
require_once(__DIR__ . "/vendor/autoload.php");
$versionedPhpImages = [
'gone/php:cli-php%php_version%',
'gone/php:apache-php%php_version%',
'gone/php:nginx-php%php_version%',
];
$phpVersions = ['5.6', '7.0', '7.1', '7.2', '7.3', ];
$nodeVariants = ['', '-gcc', '-onbuild', '-onbuild-gcc'];
$nodeVersionsMajor = ['8', '10', '11', '12'];
$images = [
'gone/marshall:latest',
'gone/php:cli',
'gone/php:apache',
'gone/php:nginx',
];
foreach($nodeVersionsMajor as $majorVersion){
foreach($nodeVariants as $variant){
$nodeVersions[] = $majorVersion . $variant;
}
}
foreach($versionedPhpImages as $versionedImage){
foreach($phpVersions as $phpVersion){
$images[] = str_replace("%php_version%", $phpVersion, $versionedImage);
}
}
foreach($nodeVersions as $nodeVersion){
$images[] = "gone/node:{$nodeVersion}";
}
sort($images);
use AdamBrett\ShellWrapper\Runners;
use AdamBrett\ShellWrapper\Command;
use React\EventLoop\Factory as LoopFactory;
use React\ChildProcess\Process;
shuffle($images);
$images = array_slice($images, 0,2);
\Kint::dump($images);
$loop = LoopFactory::create();
// Iterate and pull images
foreach($images as $image) {
$shell = new Runners\ShellExec();
$command = new Command("docker");
$command->addSubCommand(new Command\SubCommand("pull"));
$command->addParam(new Command\Param($image));
echo sprintf(
'Running: "%s"' . PHP_EOL,
(string) $command
);
$process = new Process((string) $command);
$process->start($loop);
$process->stdout->on('data', function($chunk){
#echo $chunk;
});
$process->stderr->on('data', function($chunk){
echo $chunk;
});
$process->on('exit', function($exitCode, $termSignal) use ($command) {
if($exitCode == 0){
echo sprintf(
'Process "%s", succeeded!' . PHP_EOL,
(string) $command
);
}else{
echo sprintf(
'Process "%s", exited with code %d' . PHP_EOL,
(string) $command,
$exitCode
);
echo "\n\n";
exit(255);
}
});
}
$loop->run();
// Iterate and weigh images.
$weights = [];
foreach($images as $image) {
$shell = new Runners\ShellExec();
$command = new Command("docker");
$command->addSubCommand(new Command\SubCommand("images"));
$command->addParam(new Command\Param($image));
$command->addFlag(new Command\Flag("format", "{{json .}}"));
echo sprintf(
'Running: "%s"' . PHP_EOL,
(string) $command
);
$process = new Process((string) $command);
$process->start($loop);
$process->stdout->on('data', function($chunk) use ($weights){
\Kint::dump(
json_decode($chunk)
);
});
$process->stderr->on('data', function($chunk){
echo $chunk;
});
$process->on('exit', function($exitCode, $termSignal) use ($command) {
if($exitCode == 0){
echo sprintf(
'Process "%s", succeeded!' . PHP_EOL,
(string) $command
);
}else{
echo sprintf(
'Process "%s", exited with code %d' . PHP_EOL,
(string) $command,
$exitCode
);
echo "\n\n";
exit(255);
}
});
}
$loop->run();

218
docs
View file

@ -1,218 +0,0 @@
#!/usr/bin/php
<?php
$versionedImages = [
'gone/php:cli-php%php_version%',
'gone/php:apache-php%php_version%',
'gone/php:nginx-php%php_version%',
];
$phpVersions = [
'5.6',
'7.0',
'7.1',
'7.2',
'7.3'
];
$images = [
'gone/marshall:latest',
'gone/php:cli',
'gone/php:apache',
'gone/php:nginx',
];
foreach($versionedImages as $versionedImage){
foreach($phpVersions as $phpVersion){
$images[] = str_replace("%php_version%", $phpVersion, $versionedImage);
}
}
sort($images);
$availabilityTable = [];
foreach ($images as $imageName){
@list($containerImageName, $version) = explode(":", $imageName,2);
$containerImageName = trim($containerImageName);
$version = trim(trim($version));
$cmdImage = "docker images | grep {$containerImageName}" . ($version ? " | grep {$version}" : "");
$cmdHistory = sprintf(
"docker history %s:%s -H=false",
trim($containerImageName),
trim($version)
);
$layers = 0;
foreach(explode("\n", shell_exec($cmdHistory)) as $layer) {
$layers++;
}
foreach(explode("\n", shell_exec($cmdImage)) as $imageStats) {
$imageStats = explode(" ", $imageStats);
$imageStats = array_values(array_filter($imageStats));
if(count($imageStats) == 5) {
list($name, $version, $id, $time, $size) = $imageStats;
$containerImageNameAndVersion = trim($name) . ":" . trim($version);
if($layers < 25){
$chosenLayerColour = 'green';
}elseif($layers < 35){
$chosenLayerColour = 'orange';
}else{
$chosenLayerColour = 'red';
}
$availabilityTable[$containerImageNameAndVersion] = [
'Image Name' => $containerImageNameAndVersion,
'File Size' => trim($size),
'Layers' => "[![Layers](https://img.shields.io/badge/Layers-{$layers}-{$chosenLayerColour}.svg)](https://hub.docker.com/r/" . trim($name) . ")",
'Microbadger' => "[![](https://images.microbadger.com/badges/image/{$containerImageNameAndVersion}.svg)](https://microbadger.com/images/{$containerImageNameAndVersion} \"Get your own image badge on microbadger.com\")",
'PHP' => stripos($containerImageNameAndVersion, "php") ? '✔' : ' ',
'Apache' =>stripos($containerImageNameAndVersion, "apache") ? '✔' : ' ',
'Nginx' => stripos($containerImageNameAndVersion, "nginx") ? '✔' : ' ',
'Node' => stripos($containerImageNameAndVersion, "nodejs") ? '✔' : ' ',
];
}
}
}
ksort($availabilityTable);
$outputArray = [];
foreach($availabilityTable as $item){
$outputArray[] = array_values($item);
}
$detectedPHPVersion = trim(shell_exec('docker run gone/php:cli php -v | head -1 | cut -d "-" -f 1'));
$availabilityTable = new TextTable(
array_keys(reset($availabilityTable))
);
$availabilityTable->maxlen = 100000;
$availabilityTable->addData($outputArray);
$template = file_get_contents("README.Template");
$replacements = [
"%%Availability_Table%%" => $availabilityTable->render(),
"%%Php_Version%%" => $detectedPHPVersion,
"%%Generated_At%%" => date("Y-m-d H:i:s"),
];
foreach($replacements as $search => $replacement){
$template = str_replace($search, $replacement, $template);
}
file_put_contents("README.md", $template);
/**
* Creates a markdown document based on the parsed documentation
*
* @author Peter-Christoph Haider <peter.haider@zeyon.net>
* @package Apidoc
* @version 1.00 (2014-04-04)
* @license GNU Lesser Public License
*/
class TextTable {
/** @var int The source path */
public $maxlen = 50;
/** @var array The source path */
private $data = array();
/** @var array The source path */
private $header = array();
/** @var array The source path */
private $len = array();
/** @var array The source path */
private $align = array(
'name' => 'L',
'type' => 'C'
);
/**
* @param array $header The header array [key => label, ...]
* @param array $content Content
* @param array $align Alignment optios [key => L|R|C, ...]
*/
public function __construct($header=null, $content=array(), $align=false) {
if ($header) {
$this->header = $header;
} elseif ($content) {
foreach ($content[0] as $key => $value)
$this->header[$key] = $key;
}
foreach ($this->header as $key => $label) {
$this->len[$key] = strlen($label);
}
if (is_array($align))
$this->setAlign($align);
$this->addData($content);
}
/**
* Overwrite the alignment array
*
* @param array $align Alignment optios [key => L|R|C, ...]
*/
public function setAlign($align) {
$this->align = $align;
}
/**
* Add data to the table
*
* @param array $content Content
*/
public function addData($content) {
foreach ($content as &$row) {
foreach ($this->header as $key => $value) {
if (!isset($row[$key])) {
$row[$key] = '-';
} elseif (mb_strlen($row[$key]) > $this->maxlen) {
$this->len[$key] = $this->maxlen;
$row[$key] = substr($row[$key], 0, $this->maxlen-3).'...';
} elseif (mb_strlen($row[$key]) > $this->len[$key]) {
$this->len[$key] = mb_strlen($row[$key]);
}
}
}
$this->data = $this->data + $content;
return $this;
}
/**
* Add a delimiter
*
* @return string
*/
private function renderDelimiter() {
$res = '|';
foreach ($this->len as $key => $l)
$res .= (isset($this->align[$key]) && ($this->align[$key] == 'C' || $this->align[$key] == 'L') ? ':' : ' ')
.str_repeat('-', $l)
.(isset($this->align[$key]) && ($this->align[$key] == 'C' || $this->align[$key] == 'R') ? ':' : ' ')
.'|';
return $res."\r\n";
}
/**
* Render a single row
*
* @param array $row
* @return string
*/
private function renderRow($row) {
$res = '|';
foreach ($this->len as $key => $l) {
$res .= ' '.$row[$key].($l > mb_strlen($row[$key]) ? str_repeat(' ', $l - mb_strlen($row[$key])) : '').' |';
}
return $res."\r\n";
}
/**
* Render the table
*
* @param array $content Additional table content
* @return string
*/
public function render($content=array()) {
$this->addData($content);
$res = $this->renderRow($this->header)
.$this->renderDelimiter();
foreach ($this->data as $row)
$res .= $this->renderRow($row);
return $res;
}
}

View file

@ -1,23 +0,0 @@
FROM ubuntu:latest
MAINTAINER Matthew Baggett <hello@gone.io>
ENV DEBIAN_FRONTEND="teletype" \
TERM=xterm-256color \
COMPOSER_ALLOW_SUPERUSER=1 \
COLOUR_FAIL='\e[31m' \
COLOUR_SUCCESS='\e[32m' \
COLOUR_NONE='\e[39m' \
DEFAULT_TZ='Europe/London'
CMD ["runsvdir", "-P", "/etc/service"]
WORKDIR /app
COPY ./ /app
RUN chmod +x /app/installers/install && \
mv /app/marshall_* /etc && \
/app/installers/install && \
rm -rf /app/installers /app/etc/ /app/usr Dockerfile && \
ls -lah /etc/ | grep marshall

View file

@ -1,5 +1,5 @@
#!/bin/bash
source /app/installers/config
source /installers/config
echo "force-unsafe-io" > /etc/dpkg/dpkg.cfg.d/force-unsafe-io
# swap http://archive.ubuntu.com for the new mirror://mirrors.ubuntu.com/mirrors.txt mirror-router.
sed -i 's/http\:\/\/archive\.ubuntu\.com\/ubuntu\//mirror\:\/\/mirrors.ubuntu.com\/mirrors.txt/g' /etc/apt/sources.list

View file

@ -1,4 +1,4 @@
#!/bin/bash
source /app/installers/config
source /installers/config
$APT_GET bash \
htop

View file

@ -1,4 +1,4 @@
#!/bin/bash
source /app/installers/config
source /installers/config
$APT_GET tzdata
echo $DEFAULT_TZ > /etc/timezone

View file

@ -1,4 +1,4 @@
#!/bin/bash
source /app/installers/config
source /installers/config
$APT_GET \
runit

View file

@ -1,11 +1,11 @@
#!/bin/bash
source /app/installers/config
source /installers/config
$APT_GET cron
chmod 600 /etc/crontab
mkdir /etc/service/cron
mv /app/etc/service/cron/cron.runit /etc/service/cron/run
mkdir -p /etc/service/cron
mv /etc/service/cron/cron.runit /etc/service/cron/run
chmod +x /etc/service/cron/run
# Fix cron issues in 0.9.19, see also #345: https://github.com/phusion/baseimage-docker/issues/345
sed -i 's/^\s*session\s\+required\s\+pam_loginuid.so/# &/' /etc/pam.d/cron

View file

@ -1,7 +1,7 @@
#!/bin/bash
source /app/installers/config
source /installers/config
$APT_GET rsyslog
mkdir /etc/service/rsyslog
mv /app/etc/service/rsyslog/rsyslog.runit /etc/service/rsyslog/run
mkdir -p /etc/service/rsyslog
mv /etc/service/rsyslog/rsyslog.runit /etc/service/rsyslog/run
chmod +x /etc/service/rsyslog/run

View file

@ -1,5 +1,5 @@
#!/bin/bash
source /app/installers/config
source /installers/config
$APT_GET \
inetutils-ping \

View file

@ -1,3 +1,2 @@
#!/bin/bash
mv /app/usr/bin/package-report /usr/bin/package-report
chmod +x /usr/bin/package-report

View file

@ -1,5 +1,5 @@
#!/bin/bash
source /app/installers/config
source /installers/config
cd /
apt-get autoremove -y
apt-get clean

View file

@ -2,7 +2,7 @@
set -e
for file in /app/installers/*.sh
for file in /installers/*.sh
do
/bin/bash $file

1
nodejs/.gitignore vendored
View file

@ -1 +0,0 @@
Dockerfile.node*

View file

@ -1,100 +0,0 @@
FROM gone/marshall:latest AS nodejs
#RUN groupadd --gid 1000 node \
# && useradd --uid 1000 --gid node --shell /bin/bash --create-home node
ENV NODE_VERSION={{NODE_VERSION}} \
YARN_VERSION={{YARN_VERSION}} \
PATH="/app/node_modules/.bin:${PATH}"
RUN mkdir ~/.gnupg && \
echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf && \
apt-get -qq update && \
apt-get -yq install --no-install-recommends \
lsb-core \
gnupg \
&& \
\
ARCH= && \
dpkgArch="$(dpkg --print-architecture)" && \
case "${dpkgArch##*-}" in \
amd64) ARCH='x64';; \
ppc64el) ARCH='ppc64le';; \
s390x) ARCH='s390x';; \
arm64) ARCH='arm64';; \
armhf) ARCH='armv7l';; \
i386) ARCH='x86';; \
*) echo "unsupported architecture"; exit 1 ;; \
esac \
# gpg keys listed at https://github.com/nodejs/node#release-keys
&& set -ex \
&& for key in \
94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \
FD3A5288F042B6850C66B31F09FE44734EB7990E \
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \
DD8F2338BAE7501E3DD5AC78C273792F7D83545D \
C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \
B9AE9905FFD7803F25714661B63B535A4C206CA9 \
77984A986EBC2AA786BC0F66B01FBB92821C587A \
8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \
4ED778F539E3634C779C87C6D7062848A1AB005C \
A48C2BEE680E841632CD4E44F07496B3EB3C1762 \
B9E2F5981AA6E0CD28160D9FF13993A75599653C \
; do \
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
done \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" \
&& curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
&& grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
&& tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
&& rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs \
&& set -ex \
&& for key in \
6A010C5166006599AA17F08146C2130DFD2497F5 \
; do \
gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \
gpg --batch --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \
gpg --batch --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \
done \
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \
&& curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \
&& gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
&& mkdir -p /opt \
&& tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \
&& ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \
&& rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \
\
&& apt-get autoremove -y \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
FROM nodejs AS nodejs-compiler
RUN apt-get -qq update && \
apt-get -yq install --no-install-recommends \
python \
build-essential \
&& \
apt-get autoremove -y && \
apt-get clean && \
rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/*
FROM nodejs AS nodejs-onbuild
ONBUILD ADD ./ /app
FROM nodejs-compiler AS nodejs-compiler-onbuild
ONBUILD ADD ./ /app

View file

@ -1 +0,0 @@
Dockerfile.php*

View file

@ -1,46 +0,0 @@
FROM gone/php:core-build
RUN apt-get -qq update && \
apt-get -yq install --no-install-recommends \
apache2 \
libapache2-mod-php{{PHPVERSION}} \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
\
sed -i "s/upload_max_filesize.*/upload_max_filesize = 1024M/g" /etc/php/{{PHPVERSION}}/apache2/php.ini && \
sed -i "s/post_max_size.*/post_max_size = 1024M/g" /etc/php/{{PHPVERSION}}/apache2/php.ini && \
sed -i "s/max_execution_time.*/max_execution_time = 0/g" /etc/php/{{PHPVERSION}}/apache2/php.ini && \
sed -i "s/variables_order.*/variables_order = \"EGPCS\"/g" /etc/php/{{PHPVERSION}}/apache2/php.ini && \
sed -i "s/error_reporting.*/error_reporting = E_ALL \& \~E_DEPRECATED \& \~E_STRICT \& \~E_CORE_WARNING/g" /etc/php/{{PHPVERSION}}/apache2/php.ini && \
cp /etc/php/{{PHPVERSION}}/apache2/php.ini /etc/php/{{PHPVERSION}}/cli/php.ini && \
sed -i "s/ServerSignature On/ServerSignature Off/g" /etc/apache2/conf-enabled/security.conf && \
sed -i "s/ServerTokens OS/ServerTokens Prod/g" /etc/apache2/conf-enabled/security.conf
# Expose ports.
EXPOSE 80
# Create a healthcheck that makes sure our httpd is up
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost/ || exit 1
COPY . /app
RUN rm -fr /var/www/html && \
ln -s /app /var/www/html && \
mv ApacheConfig.conf /etc/apache2/sites-enabled/000-default.conf && \
mv envvars /etc/apache2/ && \
mv apache2.conf /etc/apache2/ && \
mkdir /etc/service/apache && \
mkdir /etc/service/show_logs && \
mv apache.runit /etc/service/apache/run && \
mv show_logs.runit /etc/service/show_logs/run && \
chmod +x /etc/service/*/run && \
rm /app/* && \
a2enmod rewrite
# On build, add anything in with Dockerfile into /app
ONBUILD ADD ./ /app
# If composer.json/composer.lock exist, do a composer install.
ONBUILD RUN composer install --ignore-platform-reqs; exit 0
ONBUILD RUN composer dumpautoload -o; exit 0
ONBUILD RUN /usr/bin/install-report

1
php+cli/.gitignore vendored
View file

@ -1 +0,0 @@
Dockerfile.php*

View file

@ -1,20 +0,0 @@
FROM $FROM
RUN apt-get -qq update && \
apt-get -qy upgrade && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Install a funky cool repl.
RUN composer global require -q psy/psysh:@stable && \
ln -s /root/.composer/vendor/psy/psysh/bin/psysh /usr/local/bin/repl && \
/usr/local/bin/repl -v
COPY psysh-config.php /root/.config/psysh/config.php
# On build, add anything in with Dockerfile into /app
ONBUILD ADD ./ /app
# If composer.json/composer.lock exist, do a composer install.
ONBUILD RUN composer install; exit 0
ONBUILD RUN composer dumpautoload -o; exit 0
ONBUILD RUN /usr/bin/install-report

View file

@ -1,2 +0,0 @@
Dockerfile.php*
configure-nginx.php*.sh

View file

@ -1,62 +0,0 @@
FROM gone/php:core-build
ENV PHPFPM_MAX_CHILDREN=5
RUN apt-get -qq update && \
apt-get -yq install --no-install-recommends \
lsb-core \
gnupg \
&& \
sh -c 'echo "deb http://ppa.launchpad.net/nginx/stable/ubuntu $(lsb_release -sc) main" \
> /etc/apt/sources.list.d/nginx-stable.list' && \
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C && \
apt-get -qq update && \
apt-get -yq install --no-install-recommends \
nginx \
php{{PHPVERSION}}-fpm \
&& \
apt-get remove -yq \
lsb-core \
cups-common \
software-properties-common \
python-apt-common \
python3-software-properties \
python3.5 python3.5-minimal libpython3.5-minimal \
&& \
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Expose ports.
EXPOSE 80
# Create a healthcheck that makes sure our httpd is up
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost/ || exit 1
COPY . /app
RUN bash /app/configure-nginx.php{{PHPVERSION}}.sh && \
rm -f /app/configure-nginx.php{{PHPVERSION}}.sh && \
rm -fr /var/www/html && \
ln -s /app /var/www/html && \
mv NginxDefault /etc/nginx/sites-enabled/default && \
mkdir /etc/service/nginx && \
mkdir /etc/service/php-fpm && \
mv nginx.runit /etc/service/nginx/run && \
mv php-fpm.runit /etc/service/php-fpm/run && \
chmod +x /etc/service/*/run && \
rm /app/* && \
sed -i "s/{{PHP}}/{{PHPVERSION}}/g" /etc/nginx/sites-enabled/default && \
sed -i "s/{{PHP}}/{{PHPVERSION}}/g" /etc/service/php-fpm/run && \
# Enable status panel
sed -i -e "s/;pm.status_path/pm.status_path/g" /etc/php/*/fpm/pool.d/www.conf && \
# Using environment variables in config files works, it would seem. Neat!
sed -i -e "s/pm.max_children = 5/pm.max_children = \${PHPFPM_MAX_CHILDREN}/g" /etc/php/*/fpm/pool.d/www.conf
# On build, add anything in with Dockerfile into /app
ONBUILD ADD ./ /app
# If composer.json/composer.lock exist, do a composer install.
ONBUILD RUN composer install; exit 0
ONBUILD RUN composer dumpautoload -o; exit 0
ONBUILD RUN /usr/bin/install-report

View file

@ -1,16 +0,0 @@
#!/usr/bin/env bash
sed -i "s/cgi.fix_pathinfo.*/cgi.fix_pathinfo=0/g" /etc/php/{{PHPVERSION}}/fpm/php.ini
sed -i "s/upload_max_filesize.*/upload_max_filesize = 1024M/g" /etc/php/{{PHPVERSION}}/fpm/php.ini
sed -i "s/post_max_size.*/post_max_size = 1024M/g" /etc/php/{{PHPVERSION}}/fpm/php.ini
sed -i "s/max_execution_time.*/max_execution_time = 0/g" /etc/php/{{PHPVERSION}}/fpm/php.ini
sed -i "s/variables_order.*/variables_order = \"EGPCS\"/g" /etc/php/{{PHPVERSION}}/fpm/php.ini
sed -i "s/error_reporting.*/error_reporting = E_ALL \& \~E_DEPRECATED \& \~E_STRICT \& \~E_CORE_WARNING/g" /etc/php/{{PHPVERSION}}/fpm/php.ini
cp /etc/php/{{PHPVERSION}}/fpm/php.ini /etc/php/{{PHPVERSION}}/cli/php.ini
if [[ "{{PHPVERSION}}" = "5.6" ]] ; then
# Skip setting clear_env
echo "Skipping clear_env";
else
echo "clear_env=no" >> /etc/php/{{PHPVERSION}}/fpm/php-fpm.conf
echo "clear_env=no" >> /etc/php/{{PHPVERSION}}/fpm/pool.d/www.ini
fi
mkdir /run/php

View file

@ -1,58 +0,0 @@
FROM gone/marshall:latest
COPY install-report.sh /usr/bin/install-report
RUN apt-get -qq update && \
apt-get -yq install --no-install-recommends \
python3-software-properties \
software-properties-common \
&& \
add-apt-repository -y ppa:ondrej/php && \
apt-get -qq update && \
apt-get -yq install --no-install-recommends \
mysql-client \
php-apcu \
php-xdebug\
php5.6-bcmath \
php5.6-bz2 \
php5.6-cli \
php5.6-curl \
php5.6-gd \
php5.6-imap \
php5.6-intl \
php5.6-json \
php5.6-ldap \
php5.6-mbstring \
php5.6-mcrypt \
php5.6-memcache \
php5.6-memcached \
php5.6-mongodb \
php5.6-mysql \
php5.6-opcache \
php5.6-pgsql \
php5.6-pspell \
php5.6-redis \
php5.6-soap \
php5.6-sqlite \
php5.6-xml \
php5.6-zip \
postgresql-client \
&& \
apt-get remove -yq \
software-properties-common \
python-apt-common \
python3-software-properties \
python3.5 python3.5-minimal libpython3.5-minimal \
&& \
apt-get autoremove -y && \
rm -rf \
/usr/bin/mysqlslap \
/usr/bin/mysqldump \
/usr/bin/mysqlpump \
/usr/bin/mysql_embedded \
&& \
curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer && \
composer global require -q hirak/prestissimo && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
chmod +x /usr/bin/install-report && \
/usr/bin/install-report

View file

@ -1,58 +0,0 @@
FROM gone/marshall:latest
COPY install-report.sh /usr/bin/install-report
RUN apt-get -qq update && \
apt-get -yq install --no-install-recommends \
python3-software-properties \
software-properties-common \
&& \
add-apt-repository -y ppa:ondrej/php && \
apt-get -qq update && \
apt-get -yq install --no-install-recommends \
mysql-client \
php-apcu \
php-xdebug\
php7.0-bcmath \
php7.0-bz2 \
php7.0-cli \
php7.0-curl \
php7.0-gd \
php7.0-imap \
php7.0-intl \
php7.0-json \
php7.0-ldap \
php7.0-mbstring \
php7.0-mcrypt \
php7.0-memcache \
php7.0-memcached \
php7.0-mongodb \
php7.0-mysql \
php7.0-opcache \
php7.0-pgsql \
php7.0-pspell \
php7.0-redis \
php7.0-soap \
php7.0-sqlite \
php7.0-xml \
php7.0-zip \
postgresql-client \
&& \
apt-get remove -yq \
software-properties-common \
python-apt-common \
python3-software-properties \
python3.5 python3.5-minimal libpython3.5-minimal \
&& \
apt-get autoremove -y && \
rm -rf \
/usr/bin/mysqlslap \
/usr/bin/mysqldump \
/usr/bin/mysqlpump \
/usr/bin/mysql_embedded \
&& \
curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer && \
composer global require -q hirak/prestissimo && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
chmod +x /usr/bin/install-report && \
/usr/bin/install-report

View file

@ -1,58 +0,0 @@
FROM gone/marshall:latest
COPY install-report.sh /usr/bin/install-report
RUN apt-get -qq update && \
apt-get -yq install --no-install-recommends \
python3-software-properties \
software-properties-common \
&& \
add-apt-repository -y ppa:ondrej/php && \
apt-get -qq update && \
apt-get -yq install --no-install-recommends \
mysql-client \
php-apcu \
php-xdebug\
php7.1-bcmath \
php7.1-bz2 \
php7.1-cli \
php7.1-curl \
php7.1-gd \
php7.1-imap \
php7.1-intl \
php7.1-json \
php7.1-ldap \
php7.1-mbstring \
php7.1-mcrypt \
php7.1-memcache \
php7.1-memcached \
php7.1-mongodb \
php7.1-mysql \
php7.1-opcache \
php7.1-pgsql \
php7.1-pspell \
php7.1-redis \
php7.1-soap \
php7.1-sqlite \
php7.1-xml \
php7.1-zip \
postgresql-client \
&& \
apt-get remove -yq \
software-properties-common \
python-apt-common \
python3-software-properties \
python3.5 python3.5-minimal libpython3.5-minimal \
&& \
apt-get autoremove -y && \
rm -rf \
/usr/bin/mysqlslap \
/usr/bin/mysqldump \
/usr/bin/mysqlpump \
/usr/bin/mysql_embedded \
&& \
curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer && \
composer global require -q hirak/prestissimo && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
chmod +x /usr/bin/install-report && \
/usr/bin/install-report

View file

@ -1,57 +0,0 @@
FROM gone/marshall:latest
COPY install-report.sh /usr/bin/install-report
RUN apt-get -qq update && \
apt-get -yq install --no-install-recommends \
python3-software-properties \
software-properties-common \
&& \
add-apt-repository -y ppa:ondrej/php && \
apt-get -qq update && \
apt-get -yq install --no-install-recommends \
mysql-client \
php-apcu \
php-xdebug\
php7.2-bcmath \
php7.2-bz2 \
php7.2-cli \
php7.2-curl \
php7.2-gd \
php7.2-imap \
php7.2-intl \
php7.2-json \
php7.2-ldap \
php7.2-mbstring \
php7.2-memcache \
php7.2-memcached \
php7.2-mongodb \
php7.2-mysql \
php7.2-opcache \
php7.2-pgsql \
php7.2-pspell \
php7.2-redis \
php7.2-soap \
php7.2-sqlite \
php7.2-xml \
php7.2-zip \
postgresql-client \
&& \
apt-get remove -yq \
software-properties-common \
python-apt-common \
python3-software-properties \
python3.5 python3.5-minimal libpython3.5-minimal \
&& \
apt-get autoremove -y && \
rm -rf \
/usr/bin/mysqlslap \
/usr/bin/mysqldump \
/usr/bin/mysqlpump \
/usr/bin/mysql_embedded \
&& \
curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer && \
composer global require -q hirak/prestissimo && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
chmod +x /usr/bin/install-report && \
/usr/bin/install-report

View file

@ -1,57 +0,0 @@
FROM gone/marshall:latest
COPY install-report.sh /usr/bin/install-report
RUN apt-get -qq update && \
apt-get -yq install --no-install-recommends \
python3-software-properties \
software-properties-common \
&& \
add-apt-repository -y ppa:ondrej/php && \
apt-get -qq update && \
apt-get -yq install --no-install-recommends \
mysql-client \
php-apcu \
php-xdebug\
php7.3-bcmath \
php7.3-bz2 \
php7.3-cli \
php7.3-curl \
php7.3-gd \
php7.3-imap \
php7.3-intl \
php7.3-json \
php7.3-ldap \
php7.3-mbstring \
php7.3-memcache \
php7.3-memcached \
php7.3-mongodb \
php7.3-mysql \
php7.3-opcache \
php7.3-pgsql \
php7.3-pspell \
php7.3-redis \
php7.3-soap \
php7.3-sqlite \
php7.3-xml \
php7.3-zip \
postgresql-client \
&& \
apt-get remove -yq \
software-properties-common \
python-apt-common \
python3-software-properties \
python3.5 python3.5-minimal libpython3.5-minimal \
&& \
apt-get autoremove -y && \
rm -rf \
/usr/bin/mysqlslap \
/usr/bin/mysqldump \
/usr/bin/mysqlpump \
/usr/bin/mysql_embedded \
&& \
curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer && \
composer global require -q hirak/prestissimo && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
chmod +x /usr/bin/install-report && \
/usr/bin/install-report

View file

@ -1 +0,0 @@
FROM gone/php:apache-php5.6

View file

@ -1 +0,0 @@
FROM gone/php:apache-php7.0

View file

@ -1 +0,0 @@
FROM gone/php:apache-php7.1

View file

@ -1 +0,0 @@
FROM gone/php:apache-php7.2

View file

@ -1 +0,0 @@
FROM gone/php:apache-php7.3

View file

@ -1 +0,0 @@
FROM gone/php:nginx-php5.6

View file

@ -1 +0,0 @@
FROM gone/php:nginx-php7.0

View file

@ -1 +0,0 @@
FROM gone/php:nginx-php7.1

View file

@ -1 +0,0 @@
FROM gone/php:nginx-php7.2

View file

@ -1 +0,0 @@
FROM gone/php:nginx-php7.3

View file

@ -1,2 +0,0 @@
<?php
phpinfo();

View file

@ -1,4 +0,0 @@
FROM ubuntu:bionic
RUN apt-get -qq update && \
apt-get -yq install --no-install-recommends \
apache2-utils \