/dockerSymfonySSL

A complete stack for running Symfony 5 into Docker containers using docker-compose tool and with Certbot for the HTTPS certificate.

Primary LanguageShellGNU General Public License v3.0GPL-3.0

🐳 Docker + PHP 7.4 + MySQL8.0 + Nginx + Certbot(HTTPS) + Symfony 5 Boilerplate 🐳

symfony_logo

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

Description 📋

docker_facebook_share

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.
  • mysql which is the MySQL database container with a MySQL 8.0 image.
  • certbot generates the SSL certificate for your personal domain.

Installation ⌨

Docker Installation Illustration

  1. 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 ^^

  2. Clone this rep.

  3. Check that the dir. data/certbot/www/.well-known exist. If it is not, create it 😀.

  4. Edit init with your domain and an email.

  5. Edit the docker-compose.yml with your DB information.

  6. Run ./init.

  7. Generate your Symfony proyect going to the php container docker-compose exec php bash. Then, go to symfony folder, /var/www/certbot/phpDir, and run composer create-project symfony/skeleton NAME_OF_THE_PROJECT. If you need to install Composer click HERE or go to the end of this .md ^^

  8. Edit data/nginx/web.conf with your domain and your project dir.

  9. Run docker-compose down

  10. Run docker-compose up -d

  11. The 4 containers are deployed:

Creating docker_db_1      ... done
Creating docker_php_1     ... done
Creating docker_nginx_1   ... done
Creating docker-certbot-1 ... done
  1. Remember to edit the env file at the root of the Symfony's project. mysql is 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

Docker's useful commands 📑

Docker Commands Illustration

  • Run Docker-compose: docker-compose up -d / docker-compose up

  • Check Docker-compose's volumens status: docker-compose ps -a / docker-compose ps

  • Check Docker's images: docker images -a

  • Remove 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 bash

  • Copy a file to the docker we want to: docker cp file docker_id:/dir

  • Remove all dangling (not tagged or associated with a container) containers, volumes, networks and images: docker system prune

  • Remove all unused containers and images with at least one container associated to them: docker system prune -a

  • Shows all unused local images: docker images ls -f dangling=true

  • Shows all unused local volumes: docker volume ls -f dangling=true

  • Remove all local volumes not used by at least one container: docker volume prune

Installing Docker, Docker-compose and Composer 🛠

Docker-composer

Adjust the installation to your OS. Here you have the one for EC2(AWS) with CentOS

  • Docker installation
  1. Download and install Docker: yum install docker

  2. Gives permisions so you can run it everywhere: usermod -a -G docker ec2-user

  3. Starts Docker's service: service docker start

  4. Starts Docker's service each time you run the SO: chkconfig docker on

  • Docker-compose installation
  1. 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-compose

  2. Make it executable from anywhere: chmod +x /usr/local/bin/docker-compose

  3. Makes an direct access for docker-compose: ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

  4. Check the version and the installation: docker-compose --version

  • Composer installation
  1. Download and install Composer: curl -sS https://getcomposer.org/installer | php

  2. Moves the config file to the composer dir: mv composer.phar /usr/local/bin/composer

  3. Makes an direct access of composer.phar file: ln -s /usr/local/bin/composer /usr/bin/composer

⭐ Feedback and bugs 🐞

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 ^^

Version control 📝

  • 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