Laradock is a full PHP development environment for Docker. It contains a variety of popular services such as PostgreSQL, MySQL, Redis, MongoDB, PHPmyAdmin, and so on.
Let's setup empty Symfony project with a PostgreSQL database to see how it works:
git clone https://github.com/Laradock/laradock.git
cp .env.example .env
APP_CODE_PATH_HOST - here you can specify the location of the directory with your project
PHP_VERSION - with this setting you can set up a version of PHP, unfortunately at the time of writing this article the newest available version in laradock is 8.0
I set up the location on my project to
../app and PHP version to 8.0.
To do so type:
docker-compose up -d nginx postgres - this command will create Nginx and Postgres container. First start-up may take a while but next ones should be quick.
If you get an error that the address is already in use just change the port in the blocking service. For example to change the port of Nginx change value of
NGINX_HOST_HTTP_PORT variable in the
Nginx and PostgreSQL are two of many services available in laradock. Full list of services you can check on the project page
We need to get into Docker container by typing:
docker exec -it laradock_workspace_1 sh
When we are in a container we can use composer to install Symfony:
composer create-project symfony/skeleton .
After this, we can visit
localhost in our browser to see the standard Symfony 404 page.
In workspace container execute another command:
composer require symfony/orm-pack
and then configure a database connection in Symfony
.env, all needed configuration data we can find in laradock
.env. The default ones look like this:
POSTGRES_VERSION=alpine POSTGRES_DB=default POSTGRES_USER=default POSTGRES_PASSWORD=secret POSTGRES_PORT=5432 POSTGRES_ENTRYPOINT_INITDB=./postgres/docker-entrypoint-initdb.d
But what's the host?
Host is simply a service name, so in our case it is
Whole connection configuration variable in symfony
.env looks like this:
And that's it, we've set up docker environment with nginx and postgreSQL. Now go and write some code!!!