symfony-docker

Docker for Symfony application

Stars
38

Symfony + Nginx + php-fpm

Docker for Symfony application, powered by Nginx and php-fpm.

Based on Debian Jessie.

If you are experiencing some issues, take a look at TROUBLESHOOTING

Supported tags and respective Dockerfile links

Image tags follows PHP versions

latest 8.1 (8.1/Dockerfile)

8.0 (8.0/Dockerfile)

7 7.4 (7.4/Dockerfile)

7.3 (7.3/Dockerfile)

7.2 (7.2/Dockerfile)

7.1 Not maintained, END OF LIFE

7.0 Not maintained, END OF LIFE

5, 5.6 Not maintained, END OF LIFE

5.4 Not maintained, END OF LIFE

Compatibility matrix

Composer versions :

  • 8.0+ : 2.x
  • 7.4 : 2.x
  • 7.3 : 1.10.17
  • 7.2 : 1.10.17

Usage

docker pull kibatic/symfony

Then run in your symfony folder

# Image >= 7.3 & Symfony 2.x, 3.x
docker run -e SYMFONY_VERSION=3 -v $(pwd):/var/www -p 8080:80 kibatic/symfony:7.3

# Image >= 7.3 & Symfony 4.x
docker run -v $(pwd):/var/www -p 8080:80 kibatic/symfony:7.3

# Image < 7.3 & Symfony 2.x, 3.x
docker run -v $(pwd):/var/www -p 8080:80 kibatic/symfony:7.2

# Image < 7.3 & Symfony 4.x
docker run -e SYMFONY_VERSION=4 -v $(pwd):/var/www -p 8080:80 kibatic/symfony:7.2

Symfony app will be accessible on http://localhost:8080/

Custom nginx configuration

If you want to replace the default nginx settings, overwrite configuration file at /etc/nginx/sites-enabled/default.

COPY nginx.conf /etc/nginx/sites-enabled/default

You may also want to add only some directives in existing site config.

COPY custom-config.conf /etc/nginx/conf.d/docker/custom-config.conf

Logging (PHP >= 7.3)

For both production and dev environment you should log to stdout / stderr, example below.

# config/packages/monolog.yaml
monolog:
    handlers:
        stdout:
            type: stream
            path: 'php://stdout'
            level: debug
            channels: ['!event']
            # (Optional) format logs to json
            #formatter: monolog.formatter.json
        stderr:
            type: stream
            path: 'php://stderr'
            level: error
            # (Optional) format logs to json
            #formatter: monolog.formatter.json

Logging (PHP < 7.3)

A common practice is to log to stdout, but there are major bug in php-fpm wich makes stdout logging not reliable :

This image setup a known workaround (see here) and expose a log stream as env var LOG_STREAM, but you cannot log to stdout For a proper logging you have to configure monolog to log to this stream

# app/config_dev.yml
monolog:
    handlers:
        main:
            type:   stream
            path:   '/tmp/stdout'
            level:  debug

You can also use symfony %env(LOG_STREAM)% if your symfony version is compatible with this syntax

We also provide a default dirty solution for standard monolog configuration, this is not recommended in production

tail -q -n 0 -F app/logs/dev.log app/logs/prod.log var/logs/dev.log var/logs/prod.log

Minimal package included

  • nginx
  • php*-fpm
  • php*-cli
  • php*-intl
  • php*-mbstring

Exposed port

  • 80 : nginx
Badges
Extracted from project README's
Build Status
Related Projects