soyjorgeprg / macime

Proyecto universitario de la asignatura de Cloud Computing
GNU General Public License v3.0
0 stars 1 forks source link

Error de escritura del fichero de salida de doit en el contenedor #24

Closed soyjorgeprg closed 2 years ago

soyjorgeprg commented 3 years ago

@JJ: Os lo dije en clase. No podéis asumir que el usuario del runner va a tener el mismo UID que el del contenedor.

Originally posted by @JJ in https://github.com/JJ/CC-21-22/issues/130#issuecomment-969899008

El error que muestra el contenedor es el siguiente:

Traceback (most recent call last):
  File "/home/dev/.local/lib/python3.9/site-packages/doit/dependency.py", line 97, in dump
    db_file = open(self.name, 'w')
PermissionError: [Errno 13] Permission denied: '/app/test/doit-db.json'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/dev/.local/lib/python3.9/site-packages/doit/doit_cmd.py", line 190, in run
    return command.parse_execute(args)
  File "/home/dev/.local/lib/python3.9/site-packages/doit/cmd_base.py", line 150, in parse_execute
    return self.execute(params, args)
  File "/home/dev/.local/lib/python3.9/site-packages/doit/cmd_base.py", line 601, in execute
    return self._execute(**exec_params)
  File "/home/dev/.local/lib/python3.9/site-packages/doit/cmd_run.py", line 264, in _execute
    return runner.run_all(self.control.task_dispatcher())
  File "/home/dev/.local/lib/python3.9/site-packages/doit/runner.py", line 261, in run_all
    self.finish()
  File "/home/dev/.local/lib/python3.9/site-packages/doit/runner.py", line 240, in finish
    self.dep_manager.close()
  File "/home/dev/.local/lib/python3.9/site-packages/doit/dependency.py", line 514, in close
    self.backend.dump()
  File "/home/dev/.local/lib/python3.9/site-packages/doit/dependency.py", line 100, in dump
    db_file.close()
UnboundLocalError: local variable 'db_file' referenced before assignment
JJ commented 2 years ago

¿No lo cierras?

soyjorgeprg commented 2 years ago

¿No lo cierras?

Como ya he realizado el commit que lo soluciona ¿cómo debo hacerlo de manera correcta? ¿ Sería mejor opción modificar la version del Dockerfile y cerrarlo de esa manera o cerrarlo de manera manual?

soyjorgeprg commented 2 years ago

El error residía en que no tenía permiso para escribir en la ruta sobre la que monta el volumen (/app/test), por tanto cuando ejecutaba el contenedor:

docker run -it -v `pwd`:/app/test soyjorgeprg/macime:latest

No podía escribir sobre la raiz de mi proyecto que es donde está configurado por defecto el fichero de salida de doit, por eso como hice en el commit 046a3f1 cambie la ruta por defecto a /tmp porque es una ruta donde es más probable tener permisos.