Usuario:ManuelRomero/Docker

De WikiEducator
Saltar a: navegación, buscar


https://dev.to/code42cate/5-awesome-docker-tools-to-make-your-life-easier-22kl?context=digest


Icon objectives.jpg
Objetivos de este tema
Qué es docker
  • Entender de forma intuitiva qué es docker desde el punto de vista del programador
  • Entender qué es un contenedor
  • Ver las diferencias entre un contenedor y una máquina virtual
Instalar
  • Instalar docker
  • Crerar contenedores a partir de imágenes
  • Instalar servicios en los contenedores
  • Crear una imagen a partir de un contenedor
  • Copiar un contenedor en un fichero tar para desplegarlo a otra máquina
Hacer una app usando docker como servidor web
  • Crear una app para multidiomas usando gettext
  • Desplcear una aplicación dockerizada en un hosting

(Comment.gif: TO-DO (uso de gitaction ????) )






      1. Pendiente de revisar:

Cifrar Contraseñas en Laravel con Docker

En este tutorial aprenderás cómo gestionar contraseñas cifradas en un proyecto Laravel utilizando Docker y MySQL. A continuación, se presentan tres opciones que puedes implementar según tus necesidades y restricciones.

Opción 1: Usar Docker Secrets (Recomendado)

Docker Secrets es una forma segura de gestionar contraseñas y datos sensibles en un entorno de Docker.

1. Crear un secreto de Docker

En tu máquina, crea un archivo que contenga las contraseñas en texto plano:

echo "manuel" > db_password
echo "root12345" > db_root_password

2. Agregar los secretos al servicio

Actualiza tu archivo `docker-compose.yml` para incluir los secretos:

services:
  mysql:
    image: mysql
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=${DB_DATABASE}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD_FILE=/run/secrets/db_password
      - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_password
    secrets:
      - db_password
      - db_root_password
 
  phpmyadmin:
    image: phpmyadmin
    ports:
      - 8101:${DB_PORT_PHPMYADMIN}
    environment:
      - PMA_HOST=mysql
      - PMA_ARBITRARY=1
 
secrets:
  db_password:
    file: ./db_password
  db_root_password:
    file: ./db_root_password

3. Actualizar `.env`

No necesitas cambiar las contraseñas en `.env`, ya que ahora Docker utilizará los secretos.

Opción 2: Cifrar las contraseñas en el archivo `.env`

Si no puedes usar Docker Secrets, puedes cifrar las contraseñas en `.env` y descifrarlas dentro del contenedor.

1. Cifrar las contraseñas

Usa una herramienta como `openssl` para cifrar las contraseñas:

echo -n "manuel" | openssl enc -aes-256-cbc -a -salt -pass pass:clave
# Salida: U2FsdGVkX1/...

Guarda las contraseñas cifradas en el archivo `.env`:

DB_PASSWORD=U2FsdGVkX1/...
DB_PASSWORD_ROOT=U2FsdGVkX1/...

2. Descifrar dentro del contenedor

Modifica el `entrypoint` o el `Dockerfile` de tu servicio MySQL para descifrar las contraseñas antes de pasarlas al entorno.

Ejemplo en un `Dockerfile`:

RUN apt-get update && apt-get install -y openssl
ENTRYPOINT export MYSQL_PASSWORD=$(echo $DB_PASSWORD | openssl enc -aes-256-cbc -d -a -pass pass:clave) && \
           export MYSQL_ROOT_PASSWORD=$(echo $DB_PASSWORD_ROOT | openssl enc -aes-256-cbc -d -a -pass pass:clave) && \
           docker-entrypoint.sh

Opción 3: Usar una herramienta de gestión de secretos

Integrar una herramienta externa como **Vault by HashiCorp** o **AWS Secrets Manager** para manejar las contraseñas y pasarlas al contenedor como variables de entorno.

Consideraciones importantes

1. Seguridad de las claves: Si cifras las contraseñas, asegúrate de proteger la clave de cifrado (no guardarla en el repositorio). 2. Docker Secrets es la mejor opción: Si puedes usar Docker Secrets, lo ideal es no manejar contraseñas en los archivos `.env`. 3. Pruebas: Asegúrate de probar la configuración y verificar que las contraseñas se están aplicando correctamente.