Skip to content

aonisoft/template-for-wtcm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.