Symfony Docker

A Docker-based installer and runtime for the Symfony web framework, with full HTTP/2 and HTTPS support.

Getting Started

  1. Run docker-compose up (the logs will be displayed in the current shell)
  2. Open https://localhost in your favorite web browser and accept the auto-generated TLS certificate
  3. 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

Customize Server Name

Use the SERVER_NAME environment variable to define your custom server name.

SERVER_NAME=symfony.wip 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.

Fix Chrome/Brave SSL

If you have a SSL trust issues, download the self-signed certificate and run :

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /path/to/you/certificate.cer

Credits

Created by Kévin Dunglas, co-maintained by Maxime Helias and sponsored by Les-Tilleuls.coop.