Sign inSign up

hircoir/camp

By hircoir

•Updated over 1 year ago

CAMP (Caddy + Auto HTTPS + MySQL + PHP) es una alternativa moderna a LAMP impulsada por Docker.

Image
Web servers
0

574

hircoir/camp repository overview

⁠CAMP (Caddy + Auto HTTPS + MySQL + PHP)

A modern, lightweight LAMP alternative powered by Docker.


⁠Descripción

CAMP es un stack web listo para producción que combina:

  • Caddy como servidor web con HTTPS automático vía Let's Encrypt
  • PHP-FPM para ejecución eficiente de PHP
  • MariaDB como motor de base de datos (compatible con MySQL)
  • phpMyAdmin opcional para administración web de bases de datos
  • Generación automática de contraseñas para accesos seguros por defecto
  • Montaje de volúmenes para fácil despliegue de sitios en /var/www/html

Todo en un contenedor Docker fácil de usar, ideal para desarrollo y producción.


⁠Requisitos


⁠Uso con Docker Hub (Recomendado)

Esta es la forma más rápida de empezar. No necesitas clonar el repositorio, solo ejecutar el comando docker run con la imagen hircoir/camp.

⁠Ejemplo 1: Entorno de Desarrollo Local (HTTP)

Este comando levanta el stack con un servidor web en http://localhost y MariaDB.

# Crea un directorio para tus archivos web
mkdir -p my-website

# Ejecuta el contenedor
docker run -d \
  --name camp-dev \
  --restart unless-stopped \
  -p 80:80 \
  -p 3306:3306 \
  -v $(pwd)/my-website:/var/www/html \
  hircoir/camp
⁠Ejemplo 2: Entorno de Producción (Dominio y HTTPS)

Este comando configura un sitio con un dominio real, HTTPS automático, phpMyAdmin y credenciales personalizadas. La bandera --restart unless-stopped asegura que el contenedor se reinicie automáticamente si el servidor se reinicia.

docker run -d \
  --name camp-prod \
  --restart unless-stopped \
  -p 80:80 \
  -p 443:443 \
  -v /ruta/a/tu/sitio:/var/www/html \
  -e DOMAIN="tudominio.com" \
  -e HTTPS="true" \
  -e PHPMYADMIN="true" \
  -e MYSQL_USER="user_prod" \
  -e MYSQL_PASSWORD="una-contraseña-muy-segura" \
  hircoir/camp
  • Acceso al sitio: https://tudominio.com
  • Acceso a phpMyAdmin: https://tudominio.com/phpmyadmin/

⁠Uso Avanzado: Construir la Imagen Manualmente

Si deseas modificar el Dockerfile o el entrypoint, puedes construir la imagen localmente.

⁠1. Clonar el repositorio
git clone https://github.com/hircoir/camp.git
cd camp
⁠2. Construir la imagen Docker
docker build -t camp .
⁠3. Ejecutar el contenedor

Ahora puedes usar los mismos comandos docker run de la sección anterior, pero reemplazando hircoir/camp por el nombre que le diste a tu imagen local (camp).


⁠Variables de Entorno (Argumentos del Entrypoint)

Personaliza el comportamiento del contenedor usando variables de entorno (-e):

VariableDescripciónValor por defecto
MYSQL_USERUsuario inicial de MariaDBadmin
MYSQL_PASSWORDContraseña inicial de MariaDB (si no se define, se genera)(aleatoria)
DOMAINDominio para Caddy/Let's Encrypt (ej: midominio.com):80 (solo HTTP)
HTTPSHabilitar HTTPS automático con Let's Encrypt (true/false)false
PHPMYADMINHabilitar acceso a phpMyAdmin en /phpmyadmin (true/false)false

⁠Puertos

  • 80 → HTTP. Requerido. Se usa para el tráfico web inicial y para la validación de Let's Encrypt.
  • 443 → HTTPS. Requerido si HTTPS=true.
  • 3306 → MariaDB. Opcional. Expón este puerto solo si necesitas conectar a la base de datos desde fuera de Docker (ej: con un cliente de escritorio).

⁠Volúmenes

  • -v /ruta/host:/var/www/html → Monta el directorio de tu sitio web.

Coloca aquí los archivos de tu proyecto (index.php, etc.). Es fundamental montar un volumen para que tus datos persistan.


⁠phpMyAdmin (opcional)

Activa phpMyAdmin añadiendo -e PHPMYADMIN=true al comando docker run.

Acceso: http://localhost/phpmyadmin/ o https://tudominio.com/phpmyadmin/


⁠Seguridad

  • Contraseñas: Si no defines MYSQL_PASSWORD, se generará una contraseña segura automáticamente. Las credenciales se almacenan en /mysql_password.txt dentro del contenedor para consulta.
  • Acceso a Base de Datos: Por defecto, MariaDB está configurado para aceptar conexiones desde cualquier IP (bind-address=0.0.0.0). No expongas el puerto 3306 a internet a menos que sea estrictamente necesario y esté protegido por un firewall.

⁠Archivos Clave del Repositorio

  • Dockerfile → Define el entorno y dependencias.
  • entrypoint.sh→ Inicializa servicios y configura credenciales.
  • Caddyfile → Plantilla de configuración para el servidor web Caddy.

⁠Créditos

Inspirado en el stack LAMP, modernizado con Caddy y Docker.


⁠Licencia

MIT

Tag summary

Content type

Image

Digest

sha256:0d86f32e2…

Size

169.8 MB

Last updated

over 1 year ago

docker pull hircoir/camp