Docker images with everything you'll need to build and test PHP applications.

PHP 8.0 & 8.1 available!
8.1, 8, latest (8.1/Dockerfile) -
8.1-alpine, alpine (8.1/alpine/Dockerfile) -
8.1-fpm, fpm (8.1/fpm/Dockerfile) -
8.0 (8.0/Dockerfile) -
8.0-alpine (8.0/alpine/Dockerfile) -
8.0-fpm (8.0/fpm/Dockerfile) -
All versions come with Node 14, Composer and Yarn
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.1-chromium (8.1/chromium/Dockerfile)
8.0-chromium (8.0/chromium/Dockerfile)
Check Dusk example for more details.
.gitlab-ci.yml using mysql service# 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: mallardduck/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
.gitlab-ci.yml using mysql service, stages and cachestages:
- 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: mallardduck/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: mallardduck/gitlab-ci-pipeline-php:8.0-alpine
script:
- echo "Deploy all the things!"
only:
- master
when: on_success
.gitlab-ci.yml using mysql service and cachestages:
- 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: mallardduck/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.
Content type
Image
Digest
sha256:038e8d6e7…
Size
329.1 MB
Last updated
over 1 year ago
docker pull mallardduck/gitlab-ci-pipeline-php