Autor Tema: Instalación via Docker  (Leído 267 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Tomas Delvechio

  • Toba
  • *
  • Mensajes: 103
    • Ver Perfil
    • Email
  • Institución: Universidad Nacional de Luján
  • Nombre y apellido: Tomas Delvechio
  • Sistema: SIU-Toba
  • Teléfono laboral: 0232315544926
Instalación via Docker
« on: Marzo 10, 2022, 12:13:16 pm »
Buenas, estaba revisando como viene la mano de la instalación de Toba 3 en Docker. Para explorar, quise arrancar un proyecto de cero y dejarlo "andando" con los containers, para luego meterme en la dockerización de algun proyecto existente.

Arranqué por el template y su guía de instalación: https://github.com/SIU-Toba/template-proyecto-toba#instalaci%C3%B3n-y-creaci%C3%B3n-del-proyecto-con-docker

Obviamente edité el docker-compose.yml colocando el nombre de proyecto. En ese punto, al hacer el up, dejo los logs

Código: [Seleccionar]
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/                                                                                 
Creating network "toba-docker_default" with the default driver                                                                                                                                         
Creating pg ... done                                                                                                                                                                                   
Creating backendapi ... done                                                                                                                                                                           
Attaching to pg, backendapi                                                                                                                                                                           
pg            | The files belonging to this database system will be owned by user "postgres".                                                                                                         
pg            | This user must also own the server process.                                                                                                                                           
pg            |                                                                                                                                                                                       
pg            | The database cluster will be initialized with locale "en_US.utf8".                                                                                                                     
pg            | The default database encoding has accordingly been set to "UTF8".                                                                                                                     
pg            | The default text search configuration will be set to "english".                                                                                                                       
pg            |                                                                                                                                                                                       
pg            | Data page checksums are disabled.                                                                                                                                                     
pg            |                                                                                                                                                                                       
pg            | fixing permissions on existing directory /var/lib/postgresql/data ... ok                                                                                                               
backendapi    | Starting backendapi...                                                                                                                                                                 
pg            | creating subdirectories ... ok                                                                                                                                                         
pg            | selecting default max_connections ... 100                                                                                                                                             
pg            | selecting default shared_buffers ... 128MB                                                                                                                                             
pg            | selecting default timezone ... Etc/UTC                                                                                                                                                 
pg            | selecting dynamic shared memory implementation ... posix                                                                                                                               
backendapi    | Notice: Se utiliza el id_desarrollador default (0)                                                                                                                                     
backendapi    | Notice: Se utiliza el nombre de instalacion por default (Toba Editor)                                                                                                                 
pg            | creating configuration files ... ok                                                                                                                                                   
pg            | running bootstrap script ... ok                                                                                                                                                       
backendapi    | /entrypoint.d/toba.sh: line 89: /var/local/backendapi/vendor/siu-toba/framework/bin/connection_test: No such file or directory                                                         
backendapi    | Loading composer repositories with package information                                                                                                                                 
pg            | performing post-bootstrap initialization ... ok                                                                                                                                       
pg            | syncing data to disk ... ok                                                                                                                                                           
pg            |                                                                                                                                                                                       
pg            | Success. You can now start the database server using:                                                                                                                                 
pg            |
pg            |     pg_ctl -D /var/lib/postgresql/data -l logfile start
pg            |
pg            |
pg            | WARNING: enabling "trust" authentication for local connections
pg            | You can change this by editing pg_hba.conf or using the option -A, or
pg            | --auth-local and --auth-host, the next time you run initdb.
pg            | waiting for server to start....2022-03-10 14:39:41.112 UTC [48] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
pg            | 2022-03-10 14:39:41.123 UTC [49] LOG:  database system was shut down at 2022-03-10 14:39:40 UTC
pg            | 2022-03-10 14:39:41.126 UTC [48] LOG:  database system is ready to accept connections
pg            |  done
pg            | server started
pg            |
pg            | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
pg            |
pg            | 2022-03-10 14:39:41.235 UTC [48] LOG:  received fast shutdown request
pg            | waiting for server to shut down....2022-03-10 14:39:41.254 UTC [48] LOG:  aborting any active transactions
pg            | 2022-03-10 14:39:41.254 UTC [48] LOG:  background worker "logical replication launcher" (PID 55) exited with exit code 1
pg            | 2022-03-10 14:39:41.254 UTC [50] LOG:  shutting down
pg            | 2022-03-10 14:39:41.265 UTC [48] LOG:  database system is shut down
pg            |  done
pg            | server stopped
pg            |
pg            | PostgreSQL init process complete; ready for start up.
pg            |
pg            | 2022-03-10 14:39:41.345 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
pg            | 2022-03-10 14:39:41.345 UTC [1] LOG:  listening on IPv6 address "::", port 5432
pg            | 2022-03-10 14:39:41.347 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
pg            | 2022-03-10 14:39:41.355 UTC [67] LOG:  database system was shut down at 2022-03-10 14:39:41 UTC
pg            | 2022-03-10 14:39:41.358 UTC [1] LOG:  database system is ready to accept connections
backendapi    | Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com
/deprecating-composer-1-support/                                                                                                                                                                       
backendapi    | Info from https://repo.packagist.org: #StandWithUkraine                                                                                                                               
backendapi    | Updating dependencies (including require-dev)                                                                                                                                         
backendapi    | Your requirements could not be resolved to an installable set of packages.                                                                                                             
backendapi    |
backendapi    |   Problem 1
backendapi    |     - siu-toba/framework v3.3.9 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.8 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.7 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.6 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.5 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.4 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.3 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.23 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.22 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.21 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.20 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.2 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.19 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.18 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.17 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.16 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.15 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.14 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.13 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.12 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.11 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.10 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.1 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - siu-toba/framework v3.3.0 requires ioncube/php-openssl-cryptor dev-master -> no matching package found.
backendapi    |     - Installation request for siu-toba/framework ~3.3 -> satisfiable by siu-toba/framework[v3.3.0, v3.3.1, v3.3.10, v3.3.11, v3.3.12, v3.3.13, v3.3.14, v3.3.15, v3.3.16, v3.3.17, v3.
3.18, v3.3.19, v3.3.2, v3.3.20, v3.3.21, v3.3.22, v3.3.23, v3.3.3, v3.3.4, v3.3.5, v3.3.6, v3.3.7, v3.3.8, v3.3.9].
backendapi    |
backendapi    | Potential causes:
backendapi    |  - A typo in the package name
backendapi    |  - The package is not available in a stable-enough version according to your minimum-stability setting
backendapi    |    see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.
backendapi    |  - It's a private package and you forgot to add a custom repository to find it
backendapi    |
backendapi    | Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
backendapi    | /entrypoint.d/toba.sh: line 97: /var/local/backendapi/vendor/siu-toba/framework/bin/toba: No such file or directory
backendapi    | /entrypoint.d/toba.sh: line 112: /var/local/backendapi/vendor/siu-toba/framework/bin/toba: No such file or directory
backendapi    | grep: /var/local/docker-data/backendapi-instalacion/i__desarrollo/instancia.ini: No such file or directory
backendapi    | /entrypoint.d/toba.sh: line 142: /var/local/backendapi/vendor/siu-toba/framework/bin/toba: No such file or directory
backendapi    | chown: cannot access '/var/local/docker-data/backendapi-instalacion/i__desarrollo': No such file or directory
backendapi    | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.23.0.3. Set the 'ServerName' directive globally to suppress this message
backendapi    | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.23.0.3. Set the 'ServerName' directive globally to suppress this message
backendapi    | [Thu Mar 10 11:40:51.590071 2022] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.38 (Debian) PHP/7.3.13 configured -- resuming normal operations
backendapi    | [Thu Mar 10 11:40:51.590086 2022] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
^CGracefully stopping... (press Ctrl+C again to force)
Stopping backendapi ... done
Stopping pg         ... done

Revisando en el foro, encontré que el error de composer es por la versión de este. En el caso de mi deploy, no tengo ese composer local, sino que es el que esta en la imagen respectiva. El otro error, el del test de conexión, es porque no definí la variable DOCKER_WAIT_FOR, no?

Para el caso de composer, entiendo que deberia rebuildear una imagen de Docker Web [1], y luego a partir de esa imagen armar otra build de Docker Toba [2], y asi...

Me pareció bastante tedio, por lo que recurro acá para saber si es que se discontinuo este deploy, se cambio el enfoque y las imagenes actualizadas estan en otro lado, o esta pasando otra cosa que no entiendo.

Cualquier orientación sobre este deploy, se agradece.

[1]: https://github.com/SIU-Toba/docker-web/blob/develop/Dockerfile#L29
[2]: https://github.com/SIU-Toba/docker-toba/blob/master/Dockerfile#L1

richard

  • Moderador Global
  • *****
  • Mensajes: 2991
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Instalación via Docker
« Respuesta #1 on: Marzo 14, 2022, 01:06:03 pm »
Hola Tomas,
Buenas, estaba revisando como viene la mano de la instalación de Toba 3 en Docker. Para explorar, quise arrancar un proyecto de cero y dejarlo "andando" con los containers, para luego meterme en la dockerización de algun proyecto existente.

La instalacion por ahora es funcional pero a futuro probablemente elimine dicho archivo (docker-compose.yml) por dos motivos:

 - La imagen usada esta vieja (de ahi la version de composer) y por otro lado asume un monton de cuestiones que no deberia.
 - Dejamos de usar dichas imagenes en pos de imagenes basadas en Alpine para los modulos, el tema es que son menos "automagicas" y requieren mas laburo manual de parte del usuario final.

Cita
Revisando en el foro, encontré que el error de composer es por la versión de este. En el caso de mi deploy, no tengo ese composer local, sino que es el que esta en la imagen respectiva. El otro error, el del test de conexión, es porque no definí la variable DOCKER_WAIT_FOR, no?

Por el error que aparece, creo que el problema es que antes de realizar el UP te salteaste el paso del composer install en la maquina, entonces no tiene a mano el archivo para ejecutarlo. Recorda que esto labura con un directorio mapeado via un volumen.

La variable que mencionass DOCKER_WAIT_FOR, nos ayuda a simular la espera a que el contenedor de postgres este ready... pero a futuro va a volar tambien y en todo caso se vera de utilizar la clausula "depends" de docker para morigerar un poco la situacion, aunque lo mas probable es que se deje fallar el contenedor del framework.

Cita
Me pareció bastante tedio, por lo que recurro acá para saber si es que se discontinuo este deploy, se cambio el enfoque y las imagenes actualizadas estan en otro lado, o esta pasando otra cosa que no entiendo.
Cualquier orientación sobre este deploy, se agradece.

[1]: https://github.com/SIU-Toba/docker-web/blob/develop/Dockerfile#L29
[2]: https://github.com/SIU-Toba/docker-toba/blob/master/Dockerfile#L1

Como te decia mas arriba, estas imagenes estan viejas y solo se referencian porque en esta version aun funcionan.. pero a futuro no van mas.
Las imagenes base para proyectos se encuentran aqui pero tienen cero automatizacion de los procesos de Toba, hay que hacer la instalacion de forma manual, lo mismo que la carga/creacion del proyecto, etc.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.

Tomas Delvechio

  • Toba
  • *
  • Mensajes: 103
    • Ver Perfil
    • Email
  • Institución: Universidad Nacional de Luján
  • Nombre y apellido: Tomas Delvechio
  • Sistema: SIU-Toba
  • Teléfono laboral: 0232315544926
Re:Instalación via Docker
« Respuesta #2 on: Marzo 14, 2022, 02:25:52 pm »
A ver si te entiendo, lo que vos decis que haga es tomar las imágenes que ustedes arman de este repo, y a partir de ellas arme mi Dockerfile y mis propias imágenes instalando Toba?

Ese seria el workflow adecuado para el enfoque nuevo?

richard

  • Moderador Global
  • *****
  • Mensajes: 2991
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Instalación via Docker
« Respuesta #3 on: Marzo 16, 2022, 10:39:35 am »
Hola Tomas,
A ver si te entiendo, lo que vos decis que haga es tomar las imágenes que ustedes arman de este repo, y a partir de ellas arme mi Dockerfile y mis propias imágenes instalando Toba?

Algo asi... aunque no serian tus propias imagenes, sino que serian las imagenes de las aplicaciones.

Dicho de otra forma, la idea es que las aplicaciones/proyectos/modulos/comosellamen tengan su imagen docker de produccion y que para el desarrollo lo unico que se haga es montarle un volumen con el codigo y la instalacion de Toba realizada. La primera vez que arranca la imagen, haces la instalacion de Toba y la creacion del proyecto.. luego de eso simplemente arrancas el contenedor y laburas.

Cita
Ese seria el workflow adecuado para el enfoque nuevo?

Basado en lo anterior, no reo que sume mucho que el framework tenga sus propias imagenes (con varios scripts extra de automatizacion), mas alla de la comodidad de uso si se quiere. Y la ofuscacion de todo lo que pasa detras va en detrimento del entendimiento de como funciona el mismo.

Si desarrollas en docker, lo logico seria que esa tecnologia se traslade al deploy tambien (via CI/CD) pero para eso no podes usar la imagen de Toba, sino que hay que construir una propia para la aplicacion completamente ajustada a su funcionamiento, sin cosas de mas instaladas.

Una vez tenes dicha imagen, tiene todo el sentido usarla para el desarrollo tambien y asi no tener 2 ambientes disjuntos o configurados de manera distinta.

Quizas simplemente migre dicho archivo a un esquema donde se use la imagen base del repo mencionado y modifique la documentacion para agregar un paso manual que instale composer y yarn, una vez tenes eso podes desarrollar tranquilamente y luego a partir de ahi generar el Dockerfile de la aplicacion y reemplazarlo como nueva base.

Fijate que mas alla del up inicial, una vez instalaste las cosas no hay mucho mas que el laburo diario (igual que en una VM o Host)... quizas lo mas extraño sea que arrancas creando una imagen propia (que solo es un FROM + build) y luego desarrollas con ella, pero te queda el camino allanado para llegar hasta el deploy y mayor automatizacion luego del commit.

Saludos
Twitter es al incontinente verbal,  lo que los dulces al diabetico.