If you find this useful, remember about giving a start ⭐ to this repo or share it 🔁
Edited from https://github.com/ger86/symfony-docker version -> https://github.com/ger86/symfony-docker/tree/fc89a899ac58fb1f6ee5758377c001ad4ef4f389
This is a complete stack for running Symfony 5 into Docker containers using docker-compose tool and with Certbot for the HTTPS certificate.
It is composed by 4 containers:
nginx, acting as the webserver.php, the PHP-FPM container with the 7.4 PHPversion.mysqlwhich is the MySQL database container with a MySQL 8.0 image.certbotgenerates the SSL certificate for your personal domain.
You need Docker and Docker-compose where you are going to launch this so, if you do not have it... click HERE or go to the end of this
.md^^Clone this rep.
Check that the dir.
data/certbot/www/.well-knownexist. If it is not, create it 😀.Edit
initwith your domain and an email.Edit the
docker-compose.ymlwith your DB information.Run
./init.Generate your Symfony proyect going to the php container
docker-compose exec php bash. Then, go to symfony folder,/var/www/certbot/phpDir, and runcomposer create-project symfony/skeleton NAME_OF_THE_PROJECT. If you need to install Composer click HERE or go to the end of this.md^^Edit
data/nginx/web.confwith your domain and your project dir.Run
docker-compose downRun
docker-compose up -dThe 4 containers are deployed:
Creating docker_db_1 ... done
Creating docker_php_1 ... done
Creating docker_nginx_1 ... done
Creating docker-certbot-1 ... done
- Remember to edit the
envfile at the root of the Symfony's project.mysqlis the name of the container that has your database:
DATABASE_URL=mysql://db_user_name:db_user_pass@mysql:3306/db_name?serverVersion=5.7
Run Docker-compose:
docker-compose up -d/docker-compose upCheck Docker-compose's volumens status:
docker-compose ps -a/docker-compose psCheck Docker's images:
docker images -aRemove Docker's images:
docker rmi -f imageID1 imageID2 ...(-f = force)Enter to a Docker's volumen:
docker-compose exec VolumenID sh/docker-compose exec VolumenID bashCopy a file to the docker we want to:
docker cp file docker_id:/dirRemove all dangling (not tagged or associated with a container) containers, volumes, networks and images:
docker system pruneRemove all unused containers and images with at least one container associated to them:
docker system prune -aShows all unused local images:
docker images ls -f dangling=trueShows all unused local volumes:
docker volume ls -f dangling=trueRemove all local volumes not used by at least one container:
docker volume prune
Adjust the installation to your OS. Here you have the one for EC2(AWS) with CentOS
- Docker installation
Download and install Docker:
yum install dockerGives permisions so you can run it everywhere:
usermod -a -G docker ec2-userStarts Docker's service:
service docker startStarts Docker's service each time you run the SO:
chkconfig docker on
- Docker-compose installation
Download and install Docker-compose:
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composeMake it executable from anywhere:
chmod +x /usr/local/bin/docker-composeMakes an direct access for docker-compose:
ln -s /usr/local/bin/docker-compose /usr/bin/docker-composeCheck the version and the installation:
docker-compose --version
- Composer installation
Download and install Composer:
curl -sS https://getcomposer.org/installer | phpMoves the config file to the composer dir:
mv composer.phar /usr/local/bin/composerMakes an direct access of
composer.pharfile:ln -s /usr/local/bin/composer /usr/bin/composer
If you find any bug or just want to give your feedback (remember the ⭐ ^^), Feel free to do it. I am, like you, constantly learning and things change so quickly that... no one knows ^^
- 1.0 - Adding the Version Control zone - 08/02/2022
- 1.1 - Updated useful Docker commands - 10/02/2022
- v2.0 - Current - Add new volume to NGINX with web files & Remove unneeded files and directories - 9/11/2022




