Ваш контейнер завершен, потому что ваш скрипт script.py
завершается немедленно.Для того, чтобы контейнер работал и работал, вы должны держать процесс на переднем плане.
Я попытался немного изменить скрипт, добавив функцию сна, и это сработало -
import time
with open('data.txt', 'a+') as f:
data = 'some data to be written to the file'
f.write(data)
time.sleep(60)
Теперь, если вы сделаете docker ps
, вы должны увидеть свой контейнер вверх ивыполняется, но это только на минуту, потому что опубликуйте, что ваш скрипт завершит работу.
Подумайте о вашем контейнере как об одном процессе, если процесс выполнил свою работу, он должен завершиться.
Если поесли вы хотите запустить скрипт, увидеть вывод, но все еще хотите, чтобы контейнер работал и работал, вы можете сделать что-то вроде ниже (взломать) в Dockerfile -
FROM python:3
ADD script.py /
RUN python ./script.py && \
cat data.txt
CMD tail -f /dev/null