Diferencia entre revisiones de «Usuario:ManuelRomero/Docker»
| Línea 26: | Línea 26: | ||
*https://github.com/juanda99/curso-docker-2021/blob/main/index.md | *https://github.com/juanda99/curso-docker-2021/blob/main/index.md | ||
}} | }} | ||
| + | ### 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: | ||
| + | |||
| + | <source lang=bash> | ||
| + | echo "manuel" > db_password | ||
| + | echo "root12345" > db_root_password | ||
| + | </source> | ||
| + | |||
| + | ==== 2. Agregar los secretos al servicio ==== | ||
| + | Actualiza tu archivo `docker-compose.yml` para incluir los secretos: | ||
| + | |||
| + | <source lang=bash> | ||
| + | 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 | ||
| + | </source> | ||
| + | |||
| + | ==== 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: | ||
| + | |||
| + | <source lang=bash> | ||
| + | echo -n "manuel" | openssl enc -aes-256-cbc -a -salt -pass pass:clave | ||
| + | # Salida: U2FsdGVkX1/... | ||
| + | </source> | ||
| + | |||
| + | Guarda las contraseñas cifradas en el archivo `.env`: | ||
| + | |||
| + | <source lang=bash> | ||
| + | DB_PASSWORD=U2FsdGVkX1/... | ||
| + | DB_PASSWORD_ROOT=U2FsdGVkX1/... | ||
| + | </source> | ||
| + | |||
| + | ==== 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`: | ||
| + | |||
| + | <source lang=bash> | ||
| + | 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 | ||
| + | </source> | ||
| + | |||
| + | === 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. | ||
Revisión de 09:14 2 ene 2025
https://dev.to/code42cate/5-awesome-docker-tools-to-make-your-life-easier-22kl?context=digest
- 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_password3. 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.