У меня есть служба, которая выполняет некоторые задачи, а затем открывает порт, чтобы другие службы знали, что он завершен. Я использую nc
, чтобы сделать это: nc -l -k -p 1337
. Я использую docker-compose
для управления службами.
При закрытии служб служба, запущенная nc
, всегда закрывается на несколько секунд, пока она должна быть мгновенной. Я думаю, что процесс не прерывается и docker должен убить его. Если я запускаю nc
в той же службе через docker-compose run
, я не могу прервать процесс с помощью Ctrl + C.
При локальном запуске nc
его можно немедленно прекратить с помощью Ctrl + C.
Как создать службу, работающую nc -l -k -p 1337
, которая может быть прервана?
Dockerfile
FROM ruby:2.6.3-alpine
RUN apk add --no-cache netcat-openbsd
COPY entrypoint.sh ./
RUN chmod +x entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
entrypoint.sh
#!/bin/sh
# ...
nc -l -k -p 1337
docker-compose.yml
services:
nc:
build:
context: .
dockerfile: Dockerfile
docker-compose up --build
ИЛИ:
entrypoint.sh
#!/bin/sh
# ...
exec "$@"
docker-compose.yml
services:
nc:
build:
context: .
dockerfile: Dockerfile
command: nc -l -k -p 1337
docker-compose up --build
docker-compose run --rm nc nc -l -k -p 1337