Symfony Docker
A Docker-based installer and runtime for the Symfony web framework, with full HTTP/2 and HTTPS support.
Getting Started
- 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!
Selecting a Specific Symfony Version
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
Debugging
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.
Add a Development Stage to the Dockerfile
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_php as symfony_php_dev
ARG XDEBUG_VERSION=2.8.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
Configure Xdebug with Docker Compose Override
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:
php:
build:
context: .
target: symfony_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
Then run:
docker-compose up -d
If docker-compose.yml
and a docker-compose.override.yml
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.yml
file over and in addition to the values in the docker-compose.yml
file.
Troubleshooting
Inspect the installation with the following command. The requested Xdebug version should be displayed in the output.
$ docker-compose exec php php --version
PHP ...
with Xdebug v2.8.0 ...
Editing Permissions on Linux
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 php chown -R $(id -u):$(id -g) .
to set yourself as owner of the project files that were created by the docker container.
Credits
Created by Kévin Dunglas, co-maintained by Maxime Helias and sponsored by Les-Tilleuls.coop.