Docker images with everything you'll need to build and test PHP applications.
Based on Official PHP images
PHP 8.0 available!
-
8.0
,8
,latest
(8.0/Dockerfile) - -
8.0-alpine
,alpine
(8.0/alpine/Dockerfile) - -
8.0-fpm
,fpm
(8.0/fpm/Dockerfile) - -
7.4
,7
(7.4/Dockerfile) - -
7.4-alpine
,alpine
(7.4/alpine/Dockerfile) - -
7.4-fpm
,fpm
(7.4/fpm/Dockerfile) -
All versions come with Node 14, Composer and Yarn
PHP 7.0 - 7.3 are now deprecated and removed from this repo since they reach end of life. For more information please visit https://www.php.net/supported-versions.php
See https://hub.docker.com/r/edbizarro/gitlab-ci-pipeline-php for older images
All images come with PHP (with all laravel required extensions), Composer (with hirak/prestissimo to speed up installs), Node and Yarn.
Everything you need to test Laravel projects :D
To run Dusk tests we need chromium installed on the image, because of that we have a special tag for this case.
8.0-chromium
(8.0/chromium/Dockerfile)7.4-chromium
(7.4/chromium/Dockerfile)
Check Dusk example for more details.
# Variables
variables:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
MYSQL_DATABASE: homestead
DB_HOST: mysql
test:
stage: test
services:
- mysql:5.7
image: creacoon/gitlab-ci-pipeline-php:8.0-alpine
script:
- yarn install --pure-lockfile
- composer install --prefer-dist --no-ansi --no-interaction --no-progress
- cp .env.example .env
- php artisan key:generate
- php artisan migrate:refresh --seed
- ./vendor/phpunit/phpunit/phpunit -v --coverage-text --colors=never --stderr
stages:
- test
- deploy
# Variables
variables:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
MYSQL_DATABASE: homestead
DB_HOST: mysql
# Speed up builds
cache:
key: $CI_BUILD_REF_NAME # changed to $CI_COMMIT_REF_NAME in Gitlab 9.x
paths:
- vendor
- node_modules
- public
- .yarn
test:
stage: test
services:
- mysql:5.7
image: creacoon/gitlab-ci-pipeline-php:8.0-alpine
script:
- yarn config set cache-folder .yarn
- yarn install --pure-lockfile
- composer install --prefer-dist --no-ansi --no-interaction --no-progress
- cp .env.example .env
- php artisan key:generate
- php artisan migrate:refresh --seed
- ./vendor/phpunit/phpunit/phpunit -v --coverage-text --colors=never --stderr
artifacts:
paths:
- ./storage/logs # for debugging
expire_in: 7 days
when: always
deploy:
stage: deploy
image: creacoon/gitlab-ci-pipeline-php:8.0-alpine
script:
- echo "Deploy all the things!"
only:
- master
when: on_success
stages:
- test
# Variables
variables:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
MYSQL_DATABASE: homestead
DB_HOST: mysql
# Speed up builds
cache:
key: $CI_BUILD_REF_NAME # changed to $CI_COMMIT_REF_NAME in Gitlab 9.x
paths:
- vendor
- node_modules
- public
- .yarn
test:
stage: test
services:
- mysql:5.7
image: creacoon/gitlab-ci-pipeline-php:8.0-chromium
script:
- yarn config set cache-folder .yarn
- yarn install --pure-lockfile
- composer install --prefer-dist --no-ansi --no-interaction --no-progress
- cp .env.example .env
- php artisan key:generate
- php artisan migrate:refresh --seed
- php artisan serve &
- ./vendor/laravel/dusk/bin/chromedriver-linux --port=9515 &
- sleep 5
- php artisan dusk
artifacts:
paths:
- ./storage/logs # for debugging
- ./tests/Browser/screenshots # for Dusk screenshots
- ./tests/Browser/console
expire_in: 7 days
when: always
Recommended
Special thanks to Ambientum, an incredible Brazilian project, for the inspiration. Special thanks to the original repo from Eduardo Bizarro