Базовый образ, который вы используете в данный момент , выполняет /usr/bin/bash
в качестве команды по умолчанию , которая требует выделения tty для продолжения работы (или вам придется изменить команду на любую долгосрочную задачу).
Посмотрим, что в первую очередь происходит с самим докером.
Запуск контейнера в интерактивном режиме работает, как и ожидалось:
$ docker run -it --rm archlinux/base
[root@6642c519e328 /]# more /etc/issue
Arch Linux \r (\l)
[root@6642c519e328 /]# exit
Теперь давайте попробуем запустить контейнер в фоновом режиме.:
$ docker run -d --name testarch archlinux/base
915ff11b0c93bd795eb62d37cd2d9928638560d9accfb2e5ba061b3ef19c0235
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ # Hoho, it's not running
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
915ff11b0c93 archlinux/base "/usr/bin/bash" 8 seconds ago Exited (0) 7 seconds ago testarch
$ docker rm testarch
testarch
Если мы сделаем то же самое с распределением tty:
$ docker run -d --tty --name testarch archlinux/base
d160a3d7e18c3d094f47577b448a11808eb30ce7ba8fad4cde882818f248f207
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d160a3d7e18c archlinux/base "/usr/bin/bash" 5 seconds ago Up 4 seconds testarch
$ # Tada ! It runs, we can now attach to it.
$ docker exec -it testarch bash
[root@d160a3d7e18c /]# more /etc/issue
Arch Linux \r (\l)
[root@d160a3d7e18c /]# exit
$ docker rm -f testarch
Теперь вернемся к вашему docker-compose.yml
.На текущем этапе тестирования вам нужно выделить tty (который вы сможете удалить позже, если вам больше не нужен cmd / entry-point).
version: "3.7"
services:
arch:
image: archlinux/base
tty: true
В настоящее время bashКоманда не отправляет ничего в журнал контейнера.Я начну в отдельном режиме, поэтому команда возвращается после запуска контейнера, и я могу использовать тот же терминал (запустите второй терминал, если вы все еще хотите запустить docker-compose в режиме переднего плана)
$ pwd
/tmp/slack_test
$ docker-compose up -d
Creating network "slack_test_default" with the default driver
Creating slack_test_arch_1 ... done
$ docker-compose exec arch bash
[root@10f138d98782 /]# more /etc/issue
Arch Linux \r (\l)
[root@10f138d98782 /]# exit
exit
$ docker-compose down
Stopping slack_test_arch_1 ... done
Removing slack_test_arch_1 ... done
Removing network slack_test_default
$