GitHunt

Plantilla de Docker para usar en proyectos web

Introducción

Esta plantilla está pensada para proyectos que utilicen el siguiente stack
tecnológico:

  • Apache
  • Php-fpm
  • MariaDB
  • Myphpadmin

Note

Está inspirado en la tecnología XAMPP o LAMPP.

Se considera que quien use esta estructura tiene conocimientos previos mínimos
en:

  • Docker
  • Docker Compose
  • GNU/Linux
  • Terminal
  • Systemctl

Instalación de docker

Revisar en la guía de instalación
según que distro se esta usando.

Luego activar el servicio de docker. Para distros con systemd como manager de
servicio realizar:


systemctl status docker.service

Si lanza el siguiente mensaje:


docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; preset: disabled)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: inactive (dead)
TriggeredBy: ○ docker.socket
       Docs: https://docs.docker.com

Se puede activar de dos formas:

  1. Al iniciar el sistema
  2. De forma manual antes de usar

Important

Si no usamos todo el tiempo el servicio conviene la última opción por
cuestiones de rendimiento del SO

Iniciar junto con el sistema e iniciar servicio


sudo systemctl enable docker && \
sudo systemctl start docker

Comprobación del status


Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
    Drop-In: /usr/lib/systemd/system/service.d
             └─10-timeout-abort.conf
     Active: active (running) since ; 19s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 21232 (dockerd)
      Tasks: 53
      Memory: 115.9M
        CPU: 1.664s
      CGroup: /system.slice/docker.service
              ├─21232 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
...

Iniciar de forma manual antes de usar

Para iniciarlo:


sudo systemctl start docker

Para detenerlo:


sudo systemctl stop docker.socket docker.service

Tip

Para evitar el uso de sudo como en sudo docker ... o
sudo docker-compose ... de forma constante se puede agregar el user de
docker al group de nuestro user que utilizamos habitualmente por
ejemplo:


sudo usermod -aG docker $USER

Luego reiniciar la sección y verificar si ya pertenece al group de nuestro user.
La guía oficial para
más información.

Pasos para utilizar los servicios

Primero

Clonar este repositorio dentro de la carpeta que tiene el proyecto web

Por https


git clone https://github.com/aonisoft/docker-structure-website.git .docker && \
cd .docker

Por ssh


git clone git@github.com:aonisoft/docker-structure-website.git .docker && \
cd .docker

Segundo

Copiar el archivo .env-example y ajusta las variables de entorno a gusto


cp composefiles/.env-example composefiles/.env

Levantar los servicios del servidor

Ejecutar el servicio de docker se debe realizar:

Important

Realizar el build la primera vez luego de clonarlo o cuando se tenga que
reconstruir la imagen


docker-compose -f composefiles/compose_webserver.yml build --no-cache

El que levanta todos los servicios php, apache, mariadb y phpmyadmin es:


docker-compose -f composefiles/compose_webserver.yml up -d

Levantar los servicios de sonarqube

Los servicios para ejecutar sonarqube requiere que estén levantados los
servicios del servidor para poder utilizarlo.

Important

Realizar el build la primera vez o cuando se tenga que reconstruir la imagen


docker-compose -f composefiles/compose_sonarqube.yml build --no-cache


docker-compose -f composefiles/compose_sonarqube.yml up -d

Important

Demora unos segundos en iniciar

Bajar los servicios del servidor y sonarqube


docker-compose -f composefiles/compose_sonarqube.yml down


docker-compose -f composefiles/compose_webserver.yml down

Ejecutar composer desde el contenedor


docker exec -it php_fpm composer **command**

Sitios de inspiración

Estructura base que utiliza

Dockerfile para php

Contribuciones

Cualquier recomendación de mejora o crítica constructiva es bienvenida.

aonisoft/template-for-wtcm | GitHunt