Как будто CMD не действует.
В моем определении задачи ECS я определил команду, как показано на снимке экрана ниже.
Предполагается, что процесс python является «блокирующим процессом» - он предполагает ожидание данных в очереди SQS.
Однако из журнала облачных наблюдений кажется, что задача создается постоянно.
По сути, это похоже на выполнение этого
docker run -t simplequeue python /docverter/app/src/main.py
Контейнер запускается и сразу же завершается.
Я определил ENTRYPOINT в своем файле докеров
FROM ubuntu:16.04
RUN apt-get update -y --fix-missing
RUN apt-get install -y git python python-pip cron ntp
ENV APP_HOME /docverter
RUN mkdir -p ${APP_HOME}
COPY . ${APP_HOME}
#
# Log configuration
RUN mkdir -p /root/.aws
RUN mkdir -p /var/awslogs/state
COPY ./credentials /root/.aws/credentials
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN apt-get install -y curl
RUN curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
RUN python awslogs-agent-setup.py --non-interactive -c ${APP_HOME}/aws-log.cfg --region ap-southeast-2
# Entry point
# To ensure some background services are started when the container is started
ENTRYPOINT /docker-entrypoint.sh
И точка входа в докер выглядит следующим образом:
#!/bin/bash
set -eo pipefail
service awslogs start
service ntp start
Я хочу знать, как заставить контейнер докера выполнять команду в определении задачи.
РЕДАКТИРОВАТЬ Согласно ответу Андрея, я изменил сценарий точки входа, но это не решает проблему. Я добавил дополнительную echo "$@"
для отладки, и он печатается пустым.
docker build -t broken .
docker run -it broken python # export to have python started
Код теста можно клонировать отсюда: git clone -b broken-entry-point-and-cmd https://github.com/kongakong/aws-ecs
Вам необходимо добавить следующее в конец вашего сценария ENTRYPOINT
exec "$@"
Поскольку вы используете и ENTRYPOINT, и CMD, значения CMD передаются в ENTRYPOINT в качестве аргументов.
Итак, вам нужно указать вашему сценарию bash запускать эту команду python.
https://www.ctl.io/developers/blog/post/dockerfile-entrypoint-vs-cmd/