Desplegando un sitio estático con Docker | Programador Web Valencia

Desplegando un sitio estático con Docker

2 minutos

Docker

A menudo me encuentro con la necesidad de desplegar sitios simples en HTML, muchos de ellos estáticos. Me gustaría enseñaros como podemos desplegar un sitio estático o como incorporar un servidor web a Docker.

Primero vamos a definir la configuración del servidor web, el responsable de hacer accesible el sitio. Usaré Nginx para tal fin. ¿Por qué no Apache, Caddy u otros? Principalmente uso Nginx porque es un estándar en la industria. Sin embargo hay otros motivos igual de interesantes, como que es muy rápido, ligero y es el servidor web que yo conozca con más configuraciones avanzadas. Puedes activar elementos como balanceo de carga, caché, compresión, proxy, entre otros.

Crea el archivo nginx.conf con el siguiente contenido:

events {}

http {
  server {
      listen 80 default_server;
      server_name _;
      root /usr/share/nginx/html;
      include /etc/nginx/mime.types;
      index index.html;
      gzip on;
      gzip_disable "msie6";

      location = /favicon.ico { access_log off; log_not_found off; }
  }
}

A lo largo del tiempo, esta a sido la configuración que más óptima me ha resultado. No dudes en modificarla a tu gusto.

Crea un directorio llamado public. Dentro el archivo index.html o cualquier sitio que quieras desplegar. Es importante que el archivo index.html esté presente. En caso contrario, Nginx devolverá un error 403.

A continuación definimos compose.yaml, o actualizamos el fichero existente, con el siguiente servicio:


services:

  nginx:
    restart: "always"
    image: nginx:alpine
    ports:
      - 8000:80
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./public:/usr/share/nginx/html:ro

Recuerda que tanto nginx.conf como public deben estar en el mismo directorio que compose.yaml.

Por último, levantamos el servicio de Docker.

docker compose up -d

Ya puedes acceder a tu sitio estático en http://localhost:8000. ¡Lo hemos logrado!

Como apuntes finales, en el caso de necesitar especificar un dominio, deberíamos modificar el archivo nginx.conf. Cambia server_name _; por server_name tu-dominio.com;. Si quieres usar el puerta 80, el por defecto de cualquier sitio, deberás cambiar el puerto en ports por 80:80 en compose.yaml. Otra necesidad muy común es disponer de un certificado SSL válido, o activar el protocolo HTTPS. Para ello necesitarás jugar con Let Encrypt, certbot o cualquier otro servicio de certificados.

¡Espero que te haya sido útil! Si tienes alguna duda, no dudes en preguntar.

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me ayudas?

Comprame un café
Pulsa sobre la imagen

No te sientas obligado a realizar una donación, pero cada aportación mantiene el sitio en activo logrando que continúe existiendo y sea accesible para otras personas. Además me motiva a crear nuevo contenido.

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...