Comments (4)
Add wait-for-it to the container and use a docker entrypoint:
# DOCKERFILE
FROM <image:tag>
# Add 'wait-for-it' to check upstream availability
COPY wait-for-it.sh /usr/local/bin/wait-for-it
RUN chmod +x /usr/local/bin/wait-for-it
# Add entrypoint script
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint
ENTRYPOINT ["docker-entrypoint"]
CMD []
Then you can do your things inside the entrypoint script:
# ENTRYPOINT
#!/bin/bash
set -euo pipefail
# eventually start your server
# wait upstream server availability
wait-for-it <server>:<port> --timeout=300 --strict
# do your things
curl <server>:<port>
# eventually keep your container running
exec tail -f /dev/null
This works but it is not optimal. You should design your container to run just one process, in the foreground.
Everything depends on your process, so it's hard to guess without knowing more about your use case.
You could think to start the server and do your things in the entrypoint and then restart it and keep it running with a CMD line at the end of Dockerfile or entrypoint.
from wait-for-it.
Thanks for the tip @gioamato, it helped a lot!
from wait-for-it.
I do this with Docker Compose, by depends_on
to the service(s) to wait for.
services:
warm-up:
warmed-up:
...
command: sh -c
'wait-for-it warm-up:6768 --timeout=60
'
depends_on: ['warm-up']
profiles: ['manual']
from wait-for-it.
I do this with Docker Compose, by
depends_on
to the service(s) to wait for.services: warm-up: warmed-up: ... command: sh -c 'wait-for-it warm-up:6768 --timeout=60 ' depends_on: ['warm-up'] profiles: ['manual']
This only works for any environment you use docker-compose with, if you use anything like Fargate or k8s then this is not an option
from wait-for-it.
Related Issues (20)
- Is it possible to wait for a specific path? HOT 3
- timeout command not on macOS HOT 8
- Update debian package HOT 1
- Add option to use nc (netcat) instead o bash /dev/tcp/ HOT 1
- Can multiple be supported? HOT 4
- Wait for it is not working with node:17-alpine HOT 3
- Can you please explain to me when I need to use this project? HOT 2
- Request to have a shell version of the script HOT 4
- Mistakenly submitted issue
- Support for IPv6 addresses HOT 3
- Script timesout (No such file or directory) while running with bash command HOT 2
- Support logging to stdout
- Bug: Wrong error message when the value for -t is not given
- Not working on windows 11
- Line 75 syntax error HOT 1
- Raw shell script URL `500`
- Enable TravisCI
- Debian tracker and policy recommendation flag
- How to wait for multiple ports to be ready? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wait-for-it.