A Docker-based installer and runtime for the Symfony web framework, with full HTTP/2 and HTTPS support.
- Run
docker-compose up
(the logs will be displayed in the current shell) - Open
https://localhost
in your favorite web browser and accept the auto-generated TLS certificate - Enjoy!
Use the SYMFONY_VERSION
environment variable to select a specific Symfony version.
For instance, use the following command to install Symfony 3.4:
SYMFONY_VERSION=3.4 docker-compose up --build
To install a non-stable version of Symfony, use the STABILITY
environment variable during the build.
The value must be a valid Composer stability option) .
For instance, use the following command to use the master
branch of Symfony:
STABILITY=dev docker-compose up --build
The default Docker stack is shipped without a Xdebug stage. It's easy though to add Xdebug to your project, for development purposes such as debugging tests or API requests remotely.
To avoid deploying Symfony Docker to production with an active Xdebug extension,
it's recommended to add a custom stage to the end of the Dockerfile
.
# Dockerfile
FROM symfony_docker_php as symfony_docker_php_dev
ARG XDEBUG_VERSION=2.6.0
RUN set -eux; \
apk add --no-cache --virtual .build-deps $PHPIZE_DEPS; \
pecl install xdebug-$XDEBUG_VERSION; \
docker-php-ext-enable xdebug; \
apk del .build-deps
Using an override file named docker-compose.override.yaml
ensures that the production
configuration remains untouched.
As example, an override could look like this:
version: '3.4'
services:
app:
build:
context: .
target: symfony_docker_php_dev
environment:
# See https://docs.docker.com/docker-for-mac/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host
# See https://github.com/docker/for-linux/issues/264
# The `remote_host` below may optionally be replaced with `remote_connect_back`
XDEBUG_CONFIG: >-
remote_enable=1
remote_host=host.docker.internal
remote_port=9001
idekey=PHPSTORM
# This should correspond to the server declared in PHPStorm `Preferences | Languages & Frameworks | PHP | Servers`
# Then PHPStorm will use the corresponding path mappings
PHP_IDE_CONFIG: serverName=symfony-docker
Then run:
docker-compose up -d
If docker-compose.yaml
and a docker-compose.override.yaml
are present on the same directory level, Docker Compose combines the two files into a single configuration, applying the configuration in the docker-compose.override.yaml
file over and in addition to the values in the docker-compose.yaml
file.
Inspect the installation with the following command. The requested Xdebug version should be displayed in the output.
$ docker-compose exec app php --version
PHP 7.2.8 (cli) (built: Jul 21 2018 08:09:37) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.8, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans
If you work on linux and cannot edit some of the project files right after the first installation, you can run docker-compose run --rm app chown -R $(id -u):$(id -g) .
to set yourself as owner of the project files that were created by the docker container.
Created by Kévin Dunglas and sponsored by Les-Tilleuls.coop.