FileBeat не запускается внутри контейнера Docker

Мы создали DockerFile для запуска приложения вместе с FileBeat. Образ Docker успешно создается, и когда я запускаю контейнер, мое приложение работает нормально. Однако FileBeat не запускается при запуске контейнера.

Нам нужно вручную запустить службу FileBeat с помощью docker exec.

Ниже мой файл Docker.

FROM microsoft/aspnetcore:2.0.3
COPY pub/ /app/
WORKDIR /app

WORKDIR /usr/local/filebeat

RUN curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-amd64.deb
RUN dpkg -i filebeat-6.2.4-amd64.deb

CMD service filebeat start

WORKDIR /app

ENTRYPOINT ["dotnet", "Application.dll"]

person code_blue    schedule 28.04.2018    source источник


Ответы (1)


CMD и точка входа — это два компонента того, что будет делать образ Docker при запуске. Похоже, вы пытаетесь использовать CMD для запуска службы до запуска вашего приложения. Это не то, что он делает, и я рекомендую вам прочитать об этом здесь: https://docs.docker.com/engine/reference/builder/#cmd. Вместо этого вам нужно рассмотреть способы запуска нескольких служб в одном контейнере.

Вот краткое описание способов запуска нескольких служб в одном контейнере Docker: https://docs.docker.com/config/containers/multi-service_container/

Часто лучше всего запускать один процесс для каждого контейнера, но иногда это невозможно, поэтому либо используйте сценарий оболочки для запуска обоих процессов, либо что-то более тяжелое (например, supervisord).

Простой способ использования скрипта (встроенного со страницы документации Docker), который вы делаете точкой входа:

#!/bin/bash

# Start the first process
./my_first_process -D
status=$?
if [ $status -ne 0 ]; then
  echo "Failed to start my_first_process: $status"
  exit $status
fi

# Start the second process
./my_second_process -D
status=$?
if [ $status -ne 0 ]; then
  echo "Failed to start my_second_process: $status"
  exit $status
fi
person dpwr    schedule 28.04.2018