Dockerize Demo - Wait for containers
git co fail docker-compose up
The test should fail with something like:
test_1 | web_test.go:46: Error not expected: Get http://api/: dial tcp 172.17.0.3:80: getsockopt: connection refused
This is because Compose knows the container has started, but not the service within it.
Using Dockerize, we can ensure the tests don't run until the dependent API is up and running:
git co dockerize docker-compose up
It is common when using tools like Docker Compose to depend on services in other linked containers, however oftentimes relying on links is not enough - whilst the container itself may have started, the service(s) within it may not yet be ready - resulting in shell script hacks to work around race conditions.
This PR gives
dockerize the ability to wait for services on a specified protocol (
https) before starting the main application:
dockerize -wait tcp://web:80 -wait http://web:80
I've found this to be particularly useful when using Docker Compose as a test harness, where one of the containers needs to test another. Instead of
netcating my way around the problem, I can just wrap the command using