Docker y Rails: incapaz de acceder al archivo de registro

Cuando empiezo mi servidor de desarrollo Rails (o ejecuto una prueba) obtengo el siguiente error:

Error de bobinas: Incapaz de acceder al archivo de registro. Asegúrese de que /usr/src/app/log/development.log existe y es writable (es decir, hacerlo writable for user and group: chmod 0664 /usr/src/app/log/development.log). The log level has been raised to WARN y la salida dirigida a STDERR hasta que el problema esté fijo.

Este problema persiste incluso después de que lo haga. chmod -R 777 log.

Tengo mi app Dockerized running Alpine Linux.

¿Cuál podría ser la causa de este problema?

Pregunta hecha hace 3 años, 4 meses, 26 días - Por webweaverx


3 Respuestas:

  • Resulta que el problema era porque mi log directorio fue montado como el directorio de registro PostgreSQL.

    services:
      postgres:
        image: postgres:12.3-alpine
        mem_limit: 64m
        volumes:
          - ./log:/root/log:cached # <-- this line was the culprit
          - postgresql:/var/lib/postgresql/data:delegated
        ports:
          - "127.0.0.1:5432:5432"
        environment:
          PSQL_HISTFILE: /root/log/.psql_history
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
        restart: on-failure
        healthcheck:
          test: ["CMD-SHELL", "pg_isready -U postgres"]
          interval: 10s
          timeout: 2s
          retries: 10
        logging:
          driver: none
    

    Describa el problema con más detalle en este asunto GitHub.

    Respondida el Dec 20, 2020 a las 14:11 - por algorithmadept

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás experimentando indica que el servidor de desarrollo Rails no puede acceder al archivo de registro debido a restricciones de permisos. A pesar de que intentaste configurar los permisos con chmod -R 777 log, el problema persiste.

    Algunas posibles causas y soluciones que podrías considerar son las siguientes:

    • Permisos en Docker: Es posible que los permisos que estableces en tu sistema de host no se apliquen correctamente dentro del contenedor Docker. Asegúrate de establecer los permisos dentro del contenedor mismo. Puedes intentar ejecutar los siguientes comandos en tu contenedor Docker para cambiar los permisos del archivo de registro:
    bash
    docker exec  chmod 0664 /usr/src/app/log/development.log
    
    • Propietario del archivo: Asegúrate de que el propietario del archivo de registro sea el mismo usuario que está ejecutando el servidor Rails. Puedes intentar cambiar el propietario del archivo con el siguiente comando:
    bash
    docker exec  chown : /usr/src/app/log/development.log
    
    • Volumen Docker: Si estás utilizando volúmenes en Docker para persistir los datos de la aplicación, asegúrate de que los permisos dentro del volumen también sean correctos. Puedes intentar ajustar los permisos en el volumen directamente.
    • Entorno de desarrollo: Verifica que no haya configuraciones específicas en tu entorno de desarrollo que estén causando problemas de permisos. Asegúrate de que el usuario que ejecuta el servidor Rails tenga permisos de escritura en el archivo de registro.

    Si ninguno de estos enfoques resuelve el problema, por favor proporciona más detalles sobre tu configuración de Docker y cómo estás ejecutando el servidor de desarrollo Rails para poder brindarte una ayuda más específica.

    Respondida el Dec 21, 2020 a las 14:13 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Posibles causas:

    Permisos de archivo incorrectos: Asegúrate de que el archivo de registro /usr/src/app/log/development.log tenga permisos de escritura para el usuario y grupo de la aplicación que ejecuta Rails.

    Directorio de registro montado incorrectamente: Verifica que el directorio /usr/src/app/log esté montado correctamente desde el host al contenedor Docker.

    Problemas de volumen: Comprueba si hay algún problema con el volumen montado que aloja los archivos de registro.

    Conflicto de permisos con Docker: Asegúrate de que Docker tenga los permisos adecuados para acceder y escribir en el directorio de registro.

    Pasos para solucionar problemas:

    • Verifica los permisos de archivo: Ejecuta `ls -l /usr/src/app/log/development.log` para comprobar los permisos del archivo de registro. Debería ser similar a `-rw-rw-r--`. Si no es así, cambia los permisos con `chmod 664 /usr/src/app/log/development.log`.
    • Comprueba el montaje del directorio: En tu Dockerfile, verifica la configuración de montaje de volumen para el directorio de registro. Asegúrate de que el directorio esté montado desde la ubicación correcta en el host y con los permisos correctos.
    • Examina el volumen: Ejecuta `docker volume inspect ` para inspeccionar el volumen que contiene los archivos de registro. Verifica si hay algún problema con el volumen, como permisos incorrectos.
    • Verifica los permisos de Docker: Asegúrate de que el usuario que ejecuta Docker tenga permisos de lectura y escritura en el directorio que contiene los archivos de registro. Puedes agregar el usuario al grupo `docker` o conceder permisos explícitos.
    • Inténtalo con un volumen anónimo: Crea un volumen anónimo para los archivos de registro en Docker mediante `-v /usr/src/app/log` y verifica si el problema persiste. Si funciona, puede haber un problema con el volumen montado.

    Si sigues teniendo problemas, proporciona más información sobre tu configuración de Docker, Dockerfile y los comandos que estás ejecutando.

    Respondida el Dec 21, 2020 a las 14:25 - por Gemini

    Votos positivos: 0 | Votos negativos: 0