I am using Container Station on TS453A with latest software. I have two containers - cntr1 and cntr2. The container cntr2 is dependent on cntr1 (in Advanced Settings for cntr2, there is a link to cntr1). I would like both containers to auto-start. However, when QNAP reboots (or container station restarts), the container cntr2 doesn't start most of the time (sometime both containers will properly auto-start). The error from docker.log file is:
docker.log:time="2016-08-14T10:48:25.294704840-04:00" level=error msg="Handler for POST /v1.22/containers/79c38c1d6f5a1f049d541354cbe84854e9d36c41c6a94d7dfdb0b7aedd7fea2d/start returned error: Cannot link to a non running container: /cntr1 AS /cntr2/cntr1"
Is there any way to wait for starting the cntr2 - so it will wait for cntr1 to start?
Thanks in advance.
Multiple containers with autostart and dependencies?
-
- Starting out
- Posts: 20
- Joined: Mon Aug 15, 2016 4:43 am
-
- Starting out
- Posts: 11
- Joined: Sat Sep 10, 2016 4:07 pm
Re: Multiple containers with autostart and dependencies?
Hi,
Maybe using docker-compose with depends_on option is the better way to control the order of service startup.
https://docs.docker.com/compose/compose ... depends-on
Thanks.
Maybe using docker-compose with depends_on option is the better way to control the order of service startup.
https://docs.docker.com/compose/compose ... depends-on
Thanks.
-
- Starting out
- Posts: 20
- Joined: Mon Aug 15, 2016 4:43 am
Re: Multiple containers with autostart and dependencies?
Thank you very much. I will try that out.
-
- Starting out
- Posts: 12
- Joined: Sat Sep 17, 2016 8:41 pm
Re: Multiple containers with autostart and dependencies?
Hey guys,
did you have any success with docker compose?
Do you have any other tips to share?
Thanks
did you have any success with docker compose?
Do you have any other tips to share?
Thanks
-
- Starting out
- Posts: 20
- Joined: Mon Aug 15, 2016 4:43 am
Re: Multiple containers with autostart and dependencies?
I did not try docker compose. However, I ended up solving this problem by binding the container (cntr1 in above example) port to host port and then checking for port accessibility on the second (cntr2) container. So for example bind MySQL port # (3306) in cntr1 to a host port (e.g. 13306) and then from cntr2, I use wait-for-it (https://github.com/vishnubob/wait-for-it) to check for availability of port 13306 on the host before I start my application. This works for me because both containers are running on the same host and it is simpler - plus even if I use compose, I would need wait-for-it script anyways because compose only guarantees that cntr1 is started before cntr2 - it does not guarantee availability of services on the container(s).
Also, for me the advantage of binding to host port is that I don't need to know the IP address of the other container (which is likely to change). YMMV - especially if your containers run on multiple hosts.
Hope this helps.
Also, for me the advantage of binding to host port is that I don't need to know the IP address of the other container (which is likely to change). YMMV - especially if your containers run on multiple hosts.
Hope this helps.
-
- New here
- Posts: 3
- Joined: Thu Nov 09, 2017 6:12 am
Re: Multiple containers with autostart and dependencies?
Hi,
I'm trying to do the same thing, but I didn't fully understand how you used that scrip.
Did you put the script inside the second container and run it from there? (how did you do that )
How did you automate that script run, so that on every boot that script runs ?
I'm trying to do the same thing, but I didn't fully understand how you used that scrip.
Did you put the script inside the second container and run it from there? (how did you do that )
How did you automate that script run, so that on every boot that script runs ?
-
- Starting out
- Posts: 20
- Joined: Mon Aug 15, 2016 4:43 am
Re: Multiple containers with autostart and dependencies?
Sorry this is probably too late a response, but for copying the file to the second container I ended up creating my own Dockerfile and adding following to the Dockerfile (wait_and_run.sh is my script to check for available ports)
ADD wait_and_run.sh /tmp/
RUN chmod +x /tmp/wait_and_run.sh
ENTRYPOINT /tmp/wait_and_run.sh
And then ENTRYPOINT command actully ensures that scripts runs at startup.
ADD wait_and_run.sh /tmp/
RUN chmod +x /tmp/wait_and_run.sh
ENTRYPOINT /tmp/wait_and_run.sh
And then ENTRYPOINT command actully ensures that scripts runs at startup.