From b573d70d76fbee2b6222acdbaa44417fa097d94b Mon Sep 17 00:00:00 2001 From: john arroyo Date: Sun, 27 Nov 2016 23:26:09 -0800 Subject: [PATCH] restructure the erdiko images so that they more easily reused php versions are placed under the docker/php folders in sub folders by version number. each container has its own compose file and the main docker-compose file uses inheritance to generate containers --- docker-compose.travis.yml | 27 ++++++++++++ docker-compose.yml | 22 ++++------ docker/ci/README.md | 11 +++++ docker/ci/docker-compose.yml | 22 ++++++++++ environment.env => docker/environment.env | 0 docker/nginx/docker-compose.yml | 13 ++++++ docker/{php7 => php/5.4}/Dockerfile | 2 +- docker/{php7 => php/5.4}/conf.d/extra.ini | 0 docker/php/5.4/docker-compose.yml | 12 ++++++ docker/{php7 => php/5.4}/scripts/composer.sh | 0 .../5.4}/scripts/phpdocumentor.sh | 0 docker/{php7 => php/5.4}/scripts/phpunit.sh | 0 docker/php/5.5/Dockerfile | 42 +++++++++++++++++++ docker/php/5.5/conf.d/extra.ini | 9 ++++ docker/php/5.5/docker-compose.yml | 12 ++++++ docker/php/5.5/scripts/composer.sh | 23 ++++++++++ docker/php/5.5/scripts/phpdocumentor.sh | 6 +++ docker/php/5.5/scripts/phpunit.sh | 6 +++ docker/php/5.6/Dockerfile | 42 +++++++++++++++++++ docker/php/5.6/conf.d/extra.ini | 9 ++++ docker/php/5.6/docker-compose.yml | 12 ++++++ docker/php/5.6/scripts/composer.sh | 23 ++++++++++ docker/php/5.6/scripts/phpdocumentor.sh | 6 +++ docker/php/5.6/scripts/phpunit.sh | 6 +++ docker/php/7.0/Dockerfile | 42 +++++++++++++++++++ docker/php/7.0/conf.d/extra.ini | 9 ++++ docker/php/7.0/docker-compose.yml | 12 ++++++ docker/php/7.0/scripts/composer.sh | 23 ++++++++++ docker/php/7.0/scripts/phpdocumentor.sh | 6 +++ docker/php/7.0/scripts/phpunit.sh | 6 +++ docker/php/7.1/Dockerfile | 42 +++++++++++++++++++ docker/php/7.1/conf.d/extra.ini | 9 ++++ docker/php/7.1/docker-compose.yml | 12 ++++++ docker/php/7.1/scripts/composer.sh | 23 ++++++++++ docker/php/7.1/scripts/phpdocumentor.sh | 6 +++ docker/php/7.1/scripts/phpunit.sh | 6 +++ .../Dockerfile-utest => php/dev/Dockerfile} | 0 docker/php/dev/conf.d/extra.ini | 9 ++++ docker/php/dev/docker-compose.yml | 12 ++++++ docker/php/dev/scripts/composer.sh | 23 ++++++++++ docker/php/dev/scripts/phpdocumentor.sh | 6 +++ docker/php/dev/scripts/phpunit.sh | 6 +++ 42 files changed, 541 insertions(+), 16 deletions(-) create mode 100644 docker-compose.travis.yml create mode 100644 docker/ci/README.md create mode 100644 docker/ci/docker-compose.yml rename environment.env => docker/environment.env (100%) create mode 100644 docker/nginx/docker-compose.yml rename docker/{php7 => php/5.4}/Dockerfile (98%) rename docker/{php7 => php/5.4}/conf.d/extra.ini (100%) create mode 100644 docker/php/5.4/docker-compose.yml rename docker/{php7 => php/5.4}/scripts/composer.sh (100%) rename docker/{php7 => php/5.4}/scripts/phpdocumentor.sh (100%) rename docker/{php7 => php/5.4}/scripts/phpunit.sh (100%) create mode 100644 docker/php/5.5/Dockerfile create mode 100644 docker/php/5.5/conf.d/extra.ini create mode 100644 docker/php/5.5/docker-compose.yml create mode 100644 docker/php/5.5/scripts/composer.sh create mode 100644 docker/php/5.5/scripts/phpdocumentor.sh create mode 100644 docker/php/5.5/scripts/phpunit.sh create mode 100644 docker/php/5.6/Dockerfile create mode 100644 docker/php/5.6/conf.d/extra.ini create mode 100644 docker/php/5.6/docker-compose.yml create mode 100644 docker/php/5.6/scripts/composer.sh create mode 100644 docker/php/5.6/scripts/phpdocumentor.sh create mode 100644 docker/php/5.6/scripts/phpunit.sh create mode 100644 docker/php/7.0/Dockerfile create mode 100644 docker/php/7.0/conf.d/extra.ini create mode 100644 docker/php/7.0/docker-compose.yml create mode 100644 docker/php/7.0/scripts/composer.sh create mode 100644 docker/php/7.0/scripts/phpdocumentor.sh create mode 100644 docker/php/7.0/scripts/phpunit.sh create mode 100644 docker/php/7.1/Dockerfile create mode 100644 docker/php/7.1/conf.d/extra.ini create mode 100644 docker/php/7.1/docker-compose.yml create mode 100644 docker/php/7.1/scripts/composer.sh create mode 100644 docker/php/7.1/scripts/phpdocumentor.sh create mode 100644 docker/php/7.1/scripts/phpunit.sh rename docker/{php7/Dockerfile-utest => php/dev/Dockerfile} (100%) create mode 100644 docker/php/dev/conf.d/extra.ini create mode 100644 docker/php/dev/docker-compose.yml create mode 100644 docker/php/dev/scripts/composer.sh create mode 100644 docker/php/dev/scripts/phpdocumentor.sh create mode 100644 docker/php/dev/scripts/phpunit.sh diff --git a/docker-compose.travis.yml b/docker-compose.travis.yml new file mode 100644 index 0000000..5293262 --- /dev/null +++ b/docker-compose.travis.yml @@ -0,0 +1,27 @@ +version: '2' + +services: + webserver: + extends: + file: ./docker/nginx/docker-compose.yml + service: webserver + php: + extends: + file: ./docker/php/7.0/docker-compose.yml + service: php + php71: + extends: + file: ./docker/php/7.1/docker-compose.yml + service: php + php56: + extends: + file: ./docker/php/5.6/docker-compose.yml + service: php + php55: + extends: + file: ./docker/php/5.5/docker-compose.yml + service: php + php55: + extends: + file: ./docker/php/5.4/docker-compose.yml + service: php diff --git a/docker-compose.yml b/docker-compose.yml index f7a30f5..dd0bf95 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,21 +2,13 @@ version: '2' services: webserver: - container_name: erdiko_nginx - image: nginx:latest - env_file: environment.env - volumes: - - .:/code - - ./docker/nginx/site.conf:/etc/nginx/conf.d/site.conf - - ./docker/nginx/fastcgi.conf:/etc/nginx/fastcgi.conf + extends: + file: ./docker/nginx/docker-compose.yml + service: webserver ports: - "8088:80" php: - container_name: erdiko_php7 - env_file: environment.env - image: erdiko_php7fpm - build: - context: ./docker/php7 - volumes: - - .:/code - - ./docker/php7/conf.d:/usr/local/etc/php/conf.d + extends: + file: ./docker/php/7.0/docker-compose.yml + service: php + container_name: erdiko_php diff --git a/docker/ci/README.md b/docker/ci/README.md new file mode 100644 index 0000000..6edf6bb --- /dev/null +++ b/docker/ci/README.md @@ -0,0 +1,11 @@ +Docker +====== + +# Instructions for running a development environment with Docker +# open up docker shell, cd to your lamp docker file e.g. /docker/web and run the following commands... + +#1 Build and run the Docker container + + docker-compose up + +# Your site is now ready diff --git a/docker/ci/docker-compose.yml b/docker/ci/docker-compose.yml new file mode 100644 index 0000000..f7a30f5 --- /dev/null +++ b/docker/ci/docker-compose.yml @@ -0,0 +1,22 @@ +version: '2' + +services: + webserver: + container_name: erdiko_nginx + image: nginx:latest + env_file: environment.env + volumes: + - .:/code + - ./docker/nginx/site.conf:/etc/nginx/conf.d/site.conf + - ./docker/nginx/fastcgi.conf:/etc/nginx/fastcgi.conf + ports: + - "8088:80" + php: + container_name: erdiko_php7 + env_file: environment.env + image: erdiko_php7fpm + build: + context: ./docker/php7 + volumes: + - .:/code + - ./docker/php7/conf.d:/usr/local/etc/php/conf.d diff --git a/environment.env b/docker/environment.env similarity index 100% rename from environment.env rename to docker/environment.env diff --git a/docker/nginx/docker-compose.yml b/docker/nginx/docker-compose.yml new file mode 100644 index 0000000..a4ebb4d --- /dev/null +++ b/docker/nginx/docker-compose.yml @@ -0,0 +1,13 @@ +version: '2' + +services: + webserver: + container_name: erdiko_nginx + image: nginx:latest + env_file: ../environment.env + volumes: + - ../../:/code + - ./site.conf:/etc/nginx/conf.d/site.conf + - ./fastcgi.conf:/etc/nginx/fastcgi.conf + ports: + - "80:80" diff --git a/docker/php7/Dockerfile b/docker/php/5.4/Dockerfile similarity index 98% rename from docker/php7/Dockerfile rename to docker/php/5.4/Dockerfile index 76535dd..70fa146 100644 --- a/docker/php7/Dockerfile +++ b/docker/php/5.4/Dockerfile @@ -10,7 +10,7 @@ # Erdiko. It is lean enough for prod but intended for dev ############################################################ -FROM php:fpm +FROM php:5.4-fpm # File Author / Maintainer MAINTAINER John Arroyo, john@arroyolabs.com diff --git a/docker/php7/conf.d/extra.ini b/docker/php/5.4/conf.d/extra.ini similarity index 100% rename from docker/php7/conf.d/extra.ini rename to docker/php/5.4/conf.d/extra.ini diff --git a/docker/php/5.4/docker-compose.yml b/docker/php/5.4/docker-compose.yml new file mode 100644 index 0000000..33dec63 --- /dev/null +++ b/docker/php/5.4/docker-compose.yml @@ -0,0 +1,12 @@ +version: '2' + +services: + php: + container_name: erdiko_php_5.4 + env_file: ../../environment.env + image: erdiko_phpfpm_5.4 + build: + context: ./ + volumes: + - ../../../:/code + - ./conf.d:/usr/local/etc/php/conf.d diff --git a/docker/php7/scripts/composer.sh b/docker/php/5.4/scripts/composer.sh similarity index 100% rename from docker/php7/scripts/composer.sh rename to docker/php/5.4/scripts/composer.sh diff --git a/docker/php7/scripts/phpdocumentor.sh b/docker/php/5.4/scripts/phpdocumentor.sh similarity index 100% rename from docker/php7/scripts/phpdocumentor.sh rename to docker/php/5.4/scripts/phpdocumentor.sh diff --git a/docker/php7/scripts/phpunit.sh b/docker/php/5.4/scripts/phpunit.sh similarity index 100% rename from docker/php7/scripts/phpunit.sh rename to docker/php/5.4/scripts/phpunit.sh diff --git a/docker/php/5.5/Dockerfile b/docker/php/5.5/Dockerfile new file mode 100644 index 0000000..f833c49 --- /dev/null +++ b/docker/php/5.5/Dockerfile @@ -0,0 +1,42 @@ +############################################################ +# PHP FPM Container +# +# Contains common and useful... +# php extensions: mcrypt, gd, mysql +# linux packages: mysql-client, git, curl, wget, pwgen +# +# This is a good container for php development and includes +# common tools needed in a PHP app. Use with or without +# Erdiko. It is lean enough for prod but intended for dev +############################################################ + +FROM php:5.5-fpm + +# File Author / Maintainer +MAINTAINER John Arroyo, john@arroyolabs.com + +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get update \ + && apt-get install -y wget \ + git \ + mysql-client \ + curl \ + pwgen \ + libmcrypt-dev \ + libpng-dev \ + && docker-php-ext-install mysqli \ + pdo_mysql \ + mcrypt \ + gd \ + && apt-get clean + +# Install additional scripts (composer and phpunit) +COPY scripts /src +RUN cd /src && chmod 770 *.sh +RUN /src/composer.sh +RUN /src/phpunit.sh + +EXPOSE 9000 + +CMD ["php-fpm"] diff --git a/docker/php/5.5/conf.d/extra.ini b/docker/php/5.5/conf.d/extra.ini new file mode 100644 index 0000000..fd16787 --- /dev/null +++ b/docker/php/5.5/conf.d/extra.ini @@ -0,0 +1,9 @@ +;/usr/local/etc/php/php.ini +; variables_order = "GPCS" +date.timezone=America/Los_Angeles + +cgi.fix_pathinfo = 0 + +upload_max_filesize = 10M + +# extension=pdo_mysql.so \ No newline at end of file diff --git a/docker/php/5.5/docker-compose.yml b/docker/php/5.5/docker-compose.yml new file mode 100644 index 0000000..664a97f --- /dev/null +++ b/docker/php/5.5/docker-compose.yml @@ -0,0 +1,12 @@ +version: '2' + +services: + php: + container_name: erdiko_php_5.5 + env_file: ../../environment.env + image: erdiko_phpfpm_5.5 + build: + context: ./ + volumes: + - ../../../:/code + - ./conf.d:/usr/local/etc/php/conf.d diff --git a/docker/php/5.5/scripts/composer.sh b/docker/php/5.5/scripts/composer.sh new file mode 100644 index 0000000..6dc4b82 --- /dev/null +++ b/docker/php/5.5/scripts/composer.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# from https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md +EXPECTED_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) +php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" +ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');") + +if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] +then + >&2 echo 'ERROR: Invalid installer signature' + rm composer-setup.php + exit 1 +fi + +php composer-setup.php --quiet +RESULT=$? +rm composer-setup.php + +# Convenient alias (add by Erdiko) +mv composer.phar /usr/local/bin/composer +alias composer='php /usr/local/bin/composer' + +exit $RESULT \ No newline at end of file diff --git a/docker/php/5.5/scripts/phpdocumentor.sh b/docker/php/5.5/scripts/phpdocumentor.sh new file mode 100644 index 0000000..10cd7ef --- /dev/null +++ b/docker/php/5.5/scripts/phpdocumentor.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Install phpDocumentor, http://phpdoc.org/ +wget http://phpdoc.org/phpDocumentor.phar +chmod +x phpDocumentor.phar +mv phpDocumentor.phar /usr/local/bin/phpdocumentor diff --git a/docker/php/5.5/scripts/phpunit.sh b/docker/php/5.5/scripts/phpunit.sh new file mode 100644 index 0000000..1b50323 --- /dev/null +++ b/docker/php/5.5/scripts/phpunit.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Install Phpunit, https://phpunit.de +wget https://phar.phpunit.de/phpunit.phar +chmod +x phpunit.phar +mv phpunit.phar /usr/local/bin/phpunit diff --git a/docker/php/5.6/Dockerfile b/docker/php/5.6/Dockerfile new file mode 100644 index 0000000..3c41747 --- /dev/null +++ b/docker/php/5.6/Dockerfile @@ -0,0 +1,42 @@ +############################################################ +# PHP FPM Container +# +# Contains common and useful... +# php extensions: mcrypt, gd, mysql +# linux packages: mysql-client, git, curl, wget, pwgen +# +# This is a good container for php development and includes +# common tools needed in a PHP app. Use with or without +# Erdiko. It is lean enough for prod but intended for dev +############################################################ + +FROM php:5.6-fpm + +# File Author / Maintainer +MAINTAINER John Arroyo, john@arroyolabs.com + +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get update \ + && apt-get install -y wget \ + git \ + mysql-client \ + curl \ + pwgen \ + libmcrypt-dev \ + libpng-dev \ + && docker-php-ext-install mysqli \ + pdo_mysql \ + mcrypt \ + gd \ + && apt-get clean + +# Install additional scripts (composer and phpunit) +COPY scripts /src +RUN cd /src && chmod 770 *.sh +RUN /src/composer.sh +RUN /src/phpunit.sh + +EXPOSE 9000 + +CMD ["php-fpm"] diff --git a/docker/php/5.6/conf.d/extra.ini b/docker/php/5.6/conf.d/extra.ini new file mode 100644 index 0000000..fd16787 --- /dev/null +++ b/docker/php/5.6/conf.d/extra.ini @@ -0,0 +1,9 @@ +;/usr/local/etc/php/php.ini +; variables_order = "GPCS" +date.timezone=America/Los_Angeles + +cgi.fix_pathinfo = 0 + +upload_max_filesize = 10M + +# extension=pdo_mysql.so \ No newline at end of file diff --git a/docker/php/5.6/docker-compose.yml b/docker/php/5.6/docker-compose.yml new file mode 100644 index 0000000..ca8387f --- /dev/null +++ b/docker/php/5.6/docker-compose.yml @@ -0,0 +1,12 @@ +version: '2' + +services: + php: + container_name: erdiko_php_5.6 + env_file: ../../environment.env + image: erdiko_phpfpm_5.6 + build: + context: ./ + volumes: + - ../../../:/code + - ./conf.d:/usr/local/etc/php/conf.d diff --git a/docker/php/5.6/scripts/composer.sh b/docker/php/5.6/scripts/composer.sh new file mode 100644 index 0000000..6dc4b82 --- /dev/null +++ b/docker/php/5.6/scripts/composer.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# from https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md +EXPECTED_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) +php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" +ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');") + +if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] +then + >&2 echo 'ERROR: Invalid installer signature' + rm composer-setup.php + exit 1 +fi + +php composer-setup.php --quiet +RESULT=$? +rm composer-setup.php + +# Convenient alias (add by Erdiko) +mv composer.phar /usr/local/bin/composer +alias composer='php /usr/local/bin/composer' + +exit $RESULT \ No newline at end of file diff --git a/docker/php/5.6/scripts/phpdocumentor.sh b/docker/php/5.6/scripts/phpdocumentor.sh new file mode 100644 index 0000000..10cd7ef --- /dev/null +++ b/docker/php/5.6/scripts/phpdocumentor.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Install phpDocumentor, http://phpdoc.org/ +wget http://phpdoc.org/phpDocumentor.phar +chmod +x phpDocumentor.phar +mv phpDocumentor.phar /usr/local/bin/phpdocumentor diff --git a/docker/php/5.6/scripts/phpunit.sh b/docker/php/5.6/scripts/phpunit.sh new file mode 100644 index 0000000..1b50323 --- /dev/null +++ b/docker/php/5.6/scripts/phpunit.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Install Phpunit, https://phpunit.de +wget https://phar.phpunit.de/phpunit.phar +chmod +x phpunit.phar +mv phpunit.phar /usr/local/bin/phpunit diff --git a/docker/php/7.0/Dockerfile b/docker/php/7.0/Dockerfile new file mode 100644 index 0000000..2421d19 --- /dev/null +++ b/docker/php/7.0/Dockerfile @@ -0,0 +1,42 @@ +############################################################ +# PHP FPM Container +# +# Contains common and useful... +# php extensions: mcrypt, gd, mysql +# linux packages: mysql-client, git, curl, wget, pwgen +# +# This is a good container for php development and includes +# common tools needed in a PHP app. Use with or without +# Erdiko. It is lean enough for prod or dev. +############################################################ + +FROM php:7.0-fpm + +# File Author / Maintainer +MAINTAINER John Arroyo, john@arroyolabs.com + +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get update \ + && apt-get install -y wget \ + git \ + mysql-client \ + curl \ + pwgen \ + libmcrypt-dev \ + libpng-dev \ + && docker-php-ext-install mysqli \ + pdo_mysql \ + mcrypt \ + gd \ + && apt-get clean + +# Install additional scripts (composer and phpunit) +COPY scripts /src +RUN cd /src && chmod 770 *.sh +RUN /src/composer.sh +RUN /src/phpunit.sh + +EXPOSE 9000 + +CMD ["php-fpm"] diff --git a/docker/php/7.0/conf.d/extra.ini b/docker/php/7.0/conf.d/extra.ini new file mode 100644 index 0000000..fd16787 --- /dev/null +++ b/docker/php/7.0/conf.d/extra.ini @@ -0,0 +1,9 @@ +;/usr/local/etc/php/php.ini +; variables_order = "GPCS" +date.timezone=America/Los_Angeles + +cgi.fix_pathinfo = 0 + +upload_max_filesize = 10M + +# extension=pdo_mysql.so \ No newline at end of file diff --git a/docker/php/7.0/docker-compose.yml b/docker/php/7.0/docker-compose.yml new file mode 100644 index 0000000..531b502 --- /dev/null +++ b/docker/php/7.0/docker-compose.yml @@ -0,0 +1,12 @@ +version: '2' + +services: + php: + container_name: erdiko_php_7.0 + env_file: ../../environment.env + image: erdiko_phpfpm_7.0 + build: + context: ./ + volumes: + - ../../../:/code + - ./conf.d:/usr/local/etc/php/conf.d diff --git a/docker/php/7.0/scripts/composer.sh b/docker/php/7.0/scripts/composer.sh new file mode 100644 index 0000000..6dc4b82 --- /dev/null +++ b/docker/php/7.0/scripts/composer.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# from https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md +EXPECTED_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) +php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" +ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');") + +if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] +then + >&2 echo 'ERROR: Invalid installer signature' + rm composer-setup.php + exit 1 +fi + +php composer-setup.php --quiet +RESULT=$? +rm composer-setup.php + +# Convenient alias (add by Erdiko) +mv composer.phar /usr/local/bin/composer +alias composer='php /usr/local/bin/composer' + +exit $RESULT \ No newline at end of file diff --git a/docker/php/7.0/scripts/phpdocumentor.sh b/docker/php/7.0/scripts/phpdocumentor.sh new file mode 100644 index 0000000..10cd7ef --- /dev/null +++ b/docker/php/7.0/scripts/phpdocumentor.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Install phpDocumentor, http://phpdoc.org/ +wget http://phpdoc.org/phpDocumentor.phar +chmod +x phpDocumentor.phar +mv phpDocumentor.phar /usr/local/bin/phpdocumentor diff --git a/docker/php/7.0/scripts/phpunit.sh b/docker/php/7.0/scripts/phpunit.sh new file mode 100644 index 0000000..1b50323 --- /dev/null +++ b/docker/php/7.0/scripts/phpunit.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Install Phpunit, https://phpunit.de +wget https://phar.phpunit.de/phpunit.phar +chmod +x phpunit.phar +mv phpunit.phar /usr/local/bin/phpunit diff --git a/docker/php/7.1/Dockerfile b/docker/php/7.1/Dockerfile new file mode 100644 index 0000000..3eaeb5a --- /dev/null +++ b/docker/php/7.1/Dockerfile @@ -0,0 +1,42 @@ +############################################################ +# PHP FPM Container +# +# Contains common and useful... +# php extensions: mcrypt, gd, mysql +# linux packages: mysql-client, git, curl, wget, pwgen +# +# This is a good container for php development and includes +# common tools needed in a PHP app. Use with or without +# Erdiko. It is lean enough for prod or dev. +############################################################ + +FROM php:7.1-fpm + +# File Author / Maintainer +MAINTAINER John Arroyo, john@arroyolabs.com + +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get update \ + && apt-get install -y wget \ + git \ + mysql-client \ + curl \ + pwgen \ + libmcrypt-dev \ + libpng-dev \ + && docker-php-ext-install mysqli \ + pdo_mysql \ + mcrypt \ + gd \ + && apt-get clean + +# Install additional scripts (composer and phpunit) +COPY scripts /src +RUN cd /src && chmod 770 *.sh +RUN /src/composer.sh +RUN /src/phpunit.sh + +EXPOSE 9000 + +CMD ["php-fpm"] diff --git a/docker/php/7.1/conf.d/extra.ini b/docker/php/7.1/conf.d/extra.ini new file mode 100644 index 0000000..fd16787 --- /dev/null +++ b/docker/php/7.1/conf.d/extra.ini @@ -0,0 +1,9 @@ +;/usr/local/etc/php/php.ini +; variables_order = "GPCS" +date.timezone=America/Los_Angeles + +cgi.fix_pathinfo = 0 + +upload_max_filesize = 10M + +# extension=pdo_mysql.so \ No newline at end of file diff --git a/docker/php/7.1/docker-compose.yml b/docker/php/7.1/docker-compose.yml new file mode 100644 index 0000000..a740a17 --- /dev/null +++ b/docker/php/7.1/docker-compose.yml @@ -0,0 +1,12 @@ +version: '2' + +services: + php: + container_name: erdiko_php_7.1 + env_file: ../../environment.env + image: erdiko_phpfpm_7.1 + build: + context: ./ + volumes: + - ../../../:/code + - ./conf.d:/usr/local/etc/php/conf.d diff --git a/docker/php/7.1/scripts/composer.sh b/docker/php/7.1/scripts/composer.sh new file mode 100644 index 0000000..6dc4b82 --- /dev/null +++ b/docker/php/7.1/scripts/composer.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# from https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md +EXPECTED_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) +php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" +ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');") + +if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] +then + >&2 echo 'ERROR: Invalid installer signature' + rm composer-setup.php + exit 1 +fi + +php composer-setup.php --quiet +RESULT=$? +rm composer-setup.php + +# Convenient alias (add by Erdiko) +mv composer.phar /usr/local/bin/composer +alias composer='php /usr/local/bin/composer' + +exit $RESULT \ No newline at end of file diff --git a/docker/php/7.1/scripts/phpdocumentor.sh b/docker/php/7.1/scripts/phpdocumentor.sh new file mode 100644 index 0000000..10cd7ef --- /dev/null +++ b/docker/php/7.1/scripts/phpdocumentor.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Install phpDocumentor, http://phpdoc.org/ +wget http://phpdoc.org/phpDocumentor.phar +chmod +x phpDocumentor.phar +mv phpDocumentor.phar /usr/local/bin/phpdocumentor diff --git a/docker/php/7.1/scripts/phpunit.sh b/docker/php/7.1/scripts/phpunit.sh new file mode 100644 index 0000000..1b50323 --- /dev/null +++ b/docker/php/7.1/scripts/phpunit.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Install Phpunit, https://phpunit.de +wget https://phar.phpunit.de/phpunit.phar +chmod +x phpunit.phar +mv phpunit.phar /usr/local/bin/phpunit diff --git a/docker/php7/Dockerfile-utest b/docker/php/dev/Dockerfile similarity index 100% rename from docker/php7/Dockerfile-utest rename to docker/php/dev/Dockerfile diff --git a/docker/php/dev/conf.d/extra.ini b/docker/php/dev/conf.d/extra.ini new file mode 100644 index 0000000..fd16787 --- /dev/null +++ b/docker/php/dev/conf.d/extra.ini @@ -0,0 +1,9 @@ +;/usr/local/etc/php/php.ini +; variables_order = "GPCS" +date.timezone=America/Los_Angeles + +cgi.fix_pathinfo = 0 + +upload_max_filesize = 10M + +# extension=pdo_mysql.so \ No newline at end of file diff --git a/docker/php/dev/docker-compose.yml b/docker/php/dev/docker-compose.yml new file mode 100644 index 0000000..f1c1d9d --- /dev/null +++ b/docker/php/dev/docker-compose.yml @@ -0,0 +1,12 @@ +version: '2' + +services: + php: + container_name: erdiko_php + env_file: environment.env + image: erdiko_php7fpm + build: + context: ./ + volumes: + - ../../../:/code + - ./conf.d:/usr/local/etc/php/conf.d diff --git a/docker/php/dev/scripts/composer.sh b/docker/php/dev/scripts/composer.sh new file mode 100644 index 0000000..6dc4b82 --- /dev/null +++ b/docker/php/dev/scripts/composer.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# from https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md +EXPECTED_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) +php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" +ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');") + +if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] +then + >&2 echo 'ERROR: Invalid installer signature' + rm composer-setup.php + exit 1 +fi + +php composer-setup.php --quiet +RESULT=$? +rm composer-setup.php + +# Convenient alias (add by Erdiko) +mv composer.phar /usr/local/bin/composer +alias composer='php /usr/local/bin/composer' + +exit $RESULT \ No newline at end of file diff --git a/docker/php/dev/scripts/phpdocumentor.sh b/docker/php/dev/scripts/phpdocumentor.sh new file mode 100644 index 0000000..10cd7ef --- /dev/null +++ b/docker/php/dev/scripts/phpdocumentor.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Install phpDocumentor, http://phpdoc.org/ +wget http://phpdoc.org/phpDocumentor.phar +chmod +x phpDocumentor.phar +mv phpDocumentor.phar /usr/local/bin/phpdocumentor diff --git a/docker/php/dev/scripts/phpunit.sh b/docker/php/dev/scripts/phpunit.sh new file mode 100644 index 0000000..1b50323 --- /dev/null +++ b/docker/php/dev/scripts/phpunit.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Install Phpunit, https://phpunit.de +wget https://phar.phpunit.de/phpunit.phar +chmod +x phpunit.phar +mv phpunit.phar /usr/local/bin/phpunit