para esto, hemos creado un usuario especifico dentro del docker de Gancio.
como dependemos de archivos en el host para la ejecuciond de gancio (ej: config.json, db.sqlite), necesitamos que estos archivos esten accesibles al user de gancio DENTRO del docker
para esto, creamos un 2do docker, con el mismo usuario de gancio, que nos permitira ejecutar comandos como root. ejecutaremos este nuevo docker siempre antes de inciar gancio, para asegurarnos de devolver los permisos de los archivos del host al user de gancio.
objetivo:
- ejecutar gancio como un usuario no-root
para esto, hemos creado un usuario especifico dentro del docker de Gancio.
como dependemos de archivos en el host para la ejecuciond de gancio (ej: config.json, db.sqlite), necesitamos que estos archivos esten accesibles al user de gancio DENTRO del docker
para esto, creamos un 2do docker, con el mismo usuario de gancio, que nos permitira ejecutar comandos como root. ejecutaremos este nuevo docker siempre antes de inciar gancio, para asegurarnos de devolver los permisos de los archivos del host al user de gancio.
Te propongo una nueva forma,
y es reorganizando el volumen dentro de un directorio especifico con permisos de ese usuario.
Añadimos los ficheros de config y sqlite oportunos dentro del directorio y lo asignamos como volumen para /opt/gancio de tal manera que ahora, el setup debería funcionar sin problemas porque esa carpeta tiene los permisos para que el usuario que ejecuta gancio pueda esribir y modificar.
Acabo de hacer un PULL en la rama master con esas modificaciones, a ver si te parece bien.
Te propongo una nueva forma,
y es reorganizando el volumen dentro de un directorio especifico con permisos de ese usuario.
Añadimos los ficheros de config y sqlite oportunos dentro del directorio y lo asignamos como volumen para /opt/gancio de tal manera que ahora, el setup debería funcionar sin problemas porque esa carpeta tiene los permisos para que el usuario que ejecuta gancio pueda esribir y modificar.
Acabo de hacer un PULL en la rama master con esas modificaciones, a ver si te parece bien.
estaba pensando en que el config.json hay que poder generarlo por fuera de gancio, asi el script que haga el despliegue de una nueva instancia puede aportar los valores necearios
ademas, el archivo de config no necesita ser propiedad de la user que ejecuta gancio, siempre que no intentemos cambiar esta config desde la web.
lo que si tiene que ser propiedad de la user ejecutando gancio es el archivo de sqlite. estoy pensando como hacer esto. no veo opciones en el help que me permitan solo generar la base de datos, y cuando ejecuto gancio setup ignora lo que tengo en el config.json y me hace ingresar los datos nuevamente.
mi objetivo seria poder escribir un config.json por fuera de la ejecucion de los docker, y que al iniciar el gancio, se cree la base de datos cuando no la encuentre en el path.
el metodo actual de hacer un chmod al user que ejecuta el docker funciona, solo que requiere que seas root para cambiar el permiso a ese usuario en el host ejecutando dockers ... me gustaria dejarlo de forma que un usuario no root pueda ejecutar los dockers en local ... esoty viendo si podemos tener una db pre-generada para asi iniciar gancio sin tener que pasar por el proceso de setup que requiere de una CLI interactiva
estaba pensando en que el `config.json` hay que poder generarlo por fuera de gancio, asi el script que haga el despliegue de una nueva instancia puede aportar los valores necearios
ademas, el archivo de config no necesita ser propiedad de la user que ejecuta gancio, siempre que no intentemos cambiar esta config desde la web.
lo que si tiene que ser propiedad de la user ejecutando gancio es el archivo de sqlite. estoy pensando como hacer esto. no veo opciones en el help que me permitan solo generar la base de datos, y cuando ejecuto `gancio setup` ignora lo que tengo en el `config.json` y me hace ingresar los datos nuevamente.
mi objetivo seria poder escribir un `config.json` por fuera de la ejecucion de los docker, y que al iniciar el gancio, se cree la base de datos cuando no la encuentre en el path.
el metodo actual de hacer un `chmod` al user que ejecuta el docker funciona, solo que requiere que seas root para cambiar el permiso a ese usuario en el host ejecutando dockers ... me gustaria dejarlo de forma que un usuario no root pueda ejecutar los dockers en local ... esoty viendo si podemos tener una db pre-generada para asi iniciar gancio sin tener que pasar por el proceso de setup que requiere de una CLI interactiva
estaba pensando en que el config.json hay que poder generarlo por fuera de gancio, asi el script que haga el despliegue de una nueva instancia puede aportar los valores necearios
Si es un volumen cargado en la misma carpeta que docker-compose.yml, sería suficiente, accesible y editable según las necesidades.
ademas, el archivo de config no necesita ser propiedad de la user que ejecuta gancio, siempre que no intentemos cambiar esta config desde la web.
Desde la web si que se cambian algunos parámetros, no se si afectan al config, pero por lo común cambias el nombre de la instancia, el idioma, .. aunque eso a lo mejor va direto al SQLite. Pero no es tanto problema ejecutar el docker-compose con el usuario oportuno y ya tendría acceso a ese fichero
lo que si tiene que ser propiedad de la user ejecutando gancio es el archivo de sqlite. estoy pensando como hacer esto. no veo opciones en el help que me permitan solo generar la base de datos, y cuando ejecuto gancio setup ignora lo que tengo en el config.json y me hace ingresar los datos nuevamente.
mi objetivo seria poder escribir un config.json por fuera de la ejecucion de los docker, y que al iniciar el gancio, se cree la base de datos cuando no la encuentre en el path.
el metodo actual de hacer un chmod al user que ejecuta el docker funciona, solo que requiere que seas root para cambiar el permiso a ese usuario en el host ejecutando dockers ... me gustaria dejarlo de forma que un usuario no root pueda ejecutar los dockers en local ... esoty viendo si podemos tener una db pre-generada para asi iniciar gancio sin tener que pasar por el proceso de setup que requiere de una CLI interactiva
En SD eso no es problema,
cargamos los dockers en una maquina que tenemos aceso a root, que incluso se automatiza para que cree un usuari por cada docker y sea ese user el que ejecuta el docker usando la variable del docker-compose user.
Creo que aquí el único punto importante, sería hacer ese config y base datos preparados para que no se tenga que ejecutar el script de arranque o currarse un web UI para poder hacer esos pasos desde la web en vez de hacerlos desde una terminal.
> estaba pensando en que el config.json hay que poder generarlo por fuera de gancio, asi el script que haga el despliegue de una nueva instancia puede aportar los valores necearios
Si es un volumen cargado en la misma carpeta que docker-compose.yml, sería suficiente, accesible y editable según las necesidades.
> ademas, el archivo de config no necesita ser propiedad de la user que ejecuta gancio, siempre que no intentemos cambiar esta config desde la web.
Desde la web si que se cambian algunos parámetros, no se si afectan al config, pero por lo común cambias el nombre de la instancia, el idioma, .. aunque eso a lo mejor va direto al SQLite. Pero no es tanto problema ejecutar el docker-compose con el usuario oportuno y ya tendría acceso a ese fichero
> lo que si tiene que ser propiedad de la user ejecutando gancio es el archivo de sqlite. estoy pensando como hacer esto. no veo opciones en el help que me permitan solo generar la base de datos, y cuando ejecuto gancio setup ignora lo que tengo en el config.json y me hace ingresar los datos nuevamente.
> mi objetivo seria poder escribir un config.json por fuera de la ejecucion de los docker, y que al iniciar el gancio, se cree la base de datos cuando no la encuentre en el path.
> el metodo actual de hacer un chmod al user que ejecuta el docker funciona, solo que requiere que seas root para cambiar el permiso a ese usuario en el host ejecutando dockers ... me gustaria dejarlo de forma que un usuario no root pueda ejecutar los dockers en local ... esoty viendo si podemos tener una db pre-generada para asi iniciar gancio sin tener que pasar por el proceso de setup que requiere de una CLI interactiva
En SD eso no es problema,
cargamos los dockers en una maquina que tenemos aceso a root, que incluso se automatiza para que cree un usuari por cada docker y sea ese user el que ejecuta el docker usando la variable del docker-compose user.
Creo que aquí el único punto importante, sería hacer ese config y base datos preparados para que no se tenga que ejecutar el script de arranque o currarse un web UI para poder hacer esos pasos desde la web en vez de hacerlos desde una terminal.
hemos deprecado esta solucion en favor de una equivalente que apalanca el entrypoint en la rama gancio-entrypoint
hemos deprecado esta solucion en favor de una equivalente que apalanca el entrypoint en la rama [gancio-entrypoint](https://git.sindominio.net/gancio/docker-gancio/src/branch/gancio-entrypoint)
objetivo:
para esto, hemos creado un usuario especifico dentro del docker de Gancio.
como dependemos de archivos en el host para la ejecuciond de gancio (ej: config.json, db.sqlite), necesitamos que estos archivos esten accesibles al user de gancio DENTRO del docker
para esto, creamos un 2do docker, con el mismo usuario de gancio, que nos permitira ejecutar comandos como root. ejecutaremos este nuevo docker siempre antes de inciar gancio, para asegurarnos de devolver los permisos de los archivos del host al user de gancio.
Te propongo una nueva forma,
y es reorganizando el volumen dentro de un directorio especifico con permisos de ese usuario.
Añadimos los ficheros de config y sqlite oportunos dentro del directorio y lo asignamos como volumen para /opt/gancio de tal manera que ahora, el setup debería funcionar sin problemas porque esa carpeta tiene los permisos para que el usuario que ejecuta gancio pueda esribir y modificar.
Acabo de hacer un PULL en la rama master con esas modificaciones, a ver si te parece bien.
estaba pensando en que el
config.json
hay que poder generarlo por fuera de gancio, asi el script que haga el despliegue de una nueva instancia puede aportar los valores neceariosademas, el archivo de config no necesita ser propiedad de la user que ejecuta gancio, siempre que no intentemos cambiar esta config desde la web.
lo que si tiene que ser propiedad de la user ejecutando gancio es el archivo de sqlite. estoy pensando como hacer esto. no veo opciones en el help que me permitan solo generar la base de datos, y cuando ejecuto
gancio setup
ignora lo que tengo en elconfig.json
y me hace ingresar los datos nuevamente.mi objetivo seria poder escribir un
config.json
por fuera de la ejecucion de los docker, y que al iniciar el gancio, se cree la base de datos cuando no la encuentre en el path.el metodo actual de hacer un
chmod
al user que ejecuta el docker funciona, solo que requiere que seas root para cambiar el permiso a ese usuario en el host ejecutando dockers ... me gustaria dejarlo de forma que un usuario no root pueda ejecutar los dockers en local ... esoty viendo si podemos tener una db pre-generada para asi iniciar gancio sin tener que pasar por el proceso de setup que requiere de una CLI interactivaSi es un volumen cargado en la misma carpeta que docker-compose.yml, sería suficiente, accesible y editable según las necesidades.
Desde la web si que se cambian algunos parámetros, no se si afectan al config, pero por lo común cambias el nombre de la instancia, el idioma, .. aunque eso a lo mejor va direto al SQLite. Pero no es tanto problema ejecutar el docker-compose con el usuario oportuno y ya tendría acceso a ese fichero
En SD eso no es problema,
cargamos los dockers en una maquina que tenemos aceso a root, que incluso se automatiza para que cree un usuari por cada docker y sea ese user el que ejecuta el docker usando la variable del docker-compose user.
Creo que aquí el único punto importante, sería hacer ese config y base datos preparados para que no se tenga que ejecutar el script de arranque o currarse un web UI para poder hacer esos pasos desde la web en vez de hacerlos desde una terminal.
hemos deprecado esta solucion en favor de una equivalente que apalanca el entrypoint en la rama gancio-entrypoint