epic

Pro
Se incorporó
11 Febrero 2007
Mensajes
777
Hola a todos... estaba tratando de ejecutar una linea cada vez que el servidor iniciará , pero me encontré que cron no estaba en docker de Dart y luego cuando lo instale me encuentro que no toma la opción de @reboot , creo que es porque ni el contenedor tenia la opción de reboot, ya que el comando era desconocido (bash: reboot: command not found)

necesito que cada vez que se reinicie el contenedor crontab ejecute el siguente comando:
@reboot dart /home/homacenter/bin/main.dart

;)
 

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.442
Ojo que Docker *no es* una máquina virtual, no tengo idea en qué estará basado Dart pero probaría primero systemd, si eso no está instalado lo ejecutaría en el host, como debería ser en Docker.

Por último, docker-compose ofrece algunas herramientas para esto, no es tan potente como por ejemplo supervisord, pero sirve :)

Saludos.
 
Upvote 0

epic

Pro
Se incorporó
11 Febrero 2007
Mensajes
777
Si, estaba pensando que no era lo mas elegante hacerlo de esta forma, ya que metia mucha mano dentro dle contenedor... Dart esta basado en Debian 10.

Al final acabo de agregue en el Dockerfile lo siguiente:

.....
COPY dart.sh /usr/local/bin/dart.sh
RUN chmod +x /usr/local/bin/dart.sh
CMD ["dart.sh"]

hice una imagen y la subi a docker hub , luego borre todo y trabaje con mi imagen y estaba funcionando todo... incluido el script.

Creo que asi queda mas transparente.
 
Upvote 0

Soujiro

Fanático
Se incorporó
14 Enero 2008
Mensajes
1.396
ajaja nosotros instalamos crontab dentro de algunos contenedores, ojo con el timezone y las variables de entorno del container
 
Upvote 0

epic

Pro
Se incorporó
11 Febrero 2007
Mensajes
777
yo tuve problema con el @reboot, no lo tomaba y fue porque no existe el #reboot (ni halt, shutdown... etc) dentro del contenedor... ademas solamente quería ejecutar una linea cada vez que encendiera el contenedor.
 
Upvote 0

Soujiro

Fanático
Se incorporó
14 Enero 2008
Mensajes
1.396
Ahhh pero eso es definir el entrypoint o modificar el entrypoint del container (de todas formas es una imagen custom)... Yo hice eso para el container de mariadb cosa que pueda bajar un backup desde google storage, descomprimirlo y levantar la base desde el backup para las db de desarrollo.
 
Upvote 0

epic

Pro
Se incorporó
11 Febrero 2007
Mensajes
777
Ahhh pero eso es definir el entrypoint o modificar el entrypoint del container (de todas formas es una imagen custom)... Yo hice eso para el container de mariadb cosa que pueda bajar un backup desde google storage, descomprimirlo y levantar la base desde el backup para las db de desarrollo.
si, al final lo hice con el CMD para ejecutar el script
 
Upvote 0

biomorgoth

Miembro Regular
Se incorporó
28 Febrero 2021
Mensajes
58
Efectivamente lo que deberias usar es la instruccion CMD del Dockerfile, y junto a eso podrias apoyarte en las reglas de reinicio de contenedores de Docker si es que estas ejecutando Docker en una maquina (e.g. en tu maquina, un server mantenido manualmente, etc.)


De ahi te deberian interesar el
Bash:
--restart always
o el
Bash:
--restart unless-stopped
, dependiendo de lo que mas te convenga.

Ahora en el caso de que uses algun servicio en la nube (AWS ECS bajo Fargate por ejemplo), ya con lo del CMD deberias estar listo.
 
Upvote 0
Subir