Introduccion
Al trabajar con Docker en proyectos Node.js, es comun encontrar errores de permisos, especialmente cuando usas volumenes para bases de datos como MongoDB o PostgreSQL. Un error tipico se ve asi:
[Error: EACCES: permission denied, scandir '/home/username/Development/project/postgres-test']
[Error: EACCES: permission denied, scandir '/home/username/Development/project/mongo-test']
Este tutorial explica como resolver este problema para evitar que los volumenes se creen con permisos de root.
Explicacion del problema
El error EACCES aparece cuando intentas acceder a un archivo o directorio sin los permisos adecuados. En Docker + Node.js suele pasar con volumenes de base de datos, que por defecto se crean con permisos de root, bloqueando el acceso normal del usuario.
Solucion paso a paso
Paso 1: Preparacion
Asegurate de tener Docker y Node.js instalados.
docker --version
node --version
Tambien debes tener un archivo docker-compose.yml en tu proyecto.
Paso 2: Ajustar el archivo docker-compose.test.yml
Vamos a modificar docker-compose.test.yml para usar volumenes nombrados y evitar problemas de permisos.
version: '3.8'
services:
mongo-db:
image: mongo:6.0.6
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASS}
volumes:
- mongo-test:/data/db
ports:
- 27019:27017
postgres-db:
image: postgres:15.3
restart: always
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_PASSWORD: ${POSTGRES_PASS}
volumes:
- postgres-test:/var/lib/postgresql/data
ports:
- 5435:5432
volumes:
mongo-test:
postgres-test:
Paso 3: Ejecutar Docker Compose
- Ejecuta
docker compose downpara detener y eliminar contenedores actuales. - Ejecuta
docker compose up -dpara levantarlos con la nueva configuracion.
Paso 5: Verificacion
Verifica que mongo-test y postgres-test tengan permisos correctos y que el error EACCES haya desaparecido.
Conclusion
Con estos pasos puedes resolver de forma efectiva los problemas de permisos en Docker para proyectos Node.js y evitar errores EACCES al trabajar con volumenes de base de datos.
Happy reading! ☕
Comments