@NkDev

Как запустить контейнер через docker-compose.yml чтобы он не останавливался сразу после создания?

В папке лежат 2 файла:

1 файл: docker-compose.yml
nginx:
    build: ./


2 файл: Dockerfile
FROM centos

RUN rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum -y install nginx

CMD nginx && bash


если я запускаю команды

docker build -t img_nginx .
docker run --name cont_nginx -i -t img_nginx


то создается и запускается контейнер

Однако, если я запускаю команду

docker-compose up -d --build

То контейнер так же создается, однако не стартует. Более того я не могу к нему подключиться с помощью docker exec -i -t cont_nginx bash

Подскажите, в чем дело и как мне сделать так, чтобы контейнер стартовал сразу после запуска docker-compose up -d

Спасибо!
  • Вопрос задан
  • 5815 просмотров
Решения вопроса 1
@mureevms
Ожидаемое поведение. Это фича докера. Если процесс завершился, то контейнер останавливается, поскольку его задача окончена. Если требуется чтобы контейнер работал, то надо запустить внутри него сервис, например попробуйте просто CMD ping 127.0.0.1 и затем проверьте запущен ли контейнер docker-compose ps

В Вашем же случае надо запустить nginx примерно так CMD ["nginx", "-g", "daemon off;"]
Подключиться к работающему контейнеру можно так docker exec -it NAME bash, где NAME - имя контейнера из docker-compose ps.
А еще лучше, оформите нормально docker-compose.yml
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@evgesha3215
А что в этом случае означает CMD ["nginx", "-g", "daemon off;"] ?
А можно по аналогии такое же самое сделать для apache2 ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы