Для обработки файла нужны программа, вход, место для результата и настройки подключения к другим службам. Docker позволяет собрать это окружение из независимых частей. Перед запуском полезно записать, какой объект за что отвечает.
Например, база постоянно работает в отдельном контейнере и пишет в именованный том. Короткая задача получает CSV через bind mount только для чтения, завершает расчёт и сохраняет результат отдельно от своего слоя. При обновлении программы образ заменяют; нужные входы и тома подключают снова.
Проверьте путь данных
Для контейнера базы определите внутренний порт и публикацию на хосте. Для соседнего приложения используйте имя базы в общей сети. Для входного файла сопоставьте каталог компьютера и путь контейнера. Для результата выберите срок хранения: достаточно вывода в журнал или нужен файл, который переживёт удаление процесса.
В следующем опыте условная задача просто копирует маленький CSV. Это позволяет проверить подключения, не добавляя новый алгоритм обработки. На её место позднее можно поставить Python-программу, используя тот же способ доставки файлов и конфигурации.
Три самостоятельных шага
Сначала подготовьте базу с сетью и томом. Затем запустите конечную задачу с входным файлом и настройкой DB_HOST. В этом опыте программа не выполняет SQL: проверяется адрес, переданный в окружение. Наконец, сохраните файл в отдельном томе и подключите его к новому читателю.
После запуска сверяйте состояние через docker ps -a, настройки через inspect, файлы через exec ... cat. Завершённая задача и работающая база — ожидаемое сочетание для такой обработки.
Попробуйте в учебном терминале
В /home/de/exam-input/source.csv лежит маленький CSV. Остальные ресурсы создайте самостоятельно по условиям трёх заданий. Объекты предыдущих уроков сюда не переносятся.
Здесь команды Docker имитируются: терминал хранит учебное состояние образов, контейнеров и файлов. Реальные службы и внешнюю сеть он не запускает.
- 1. Создайте exam-net и exam-data; запустите exam-db из postgres:17 в этой сети с учебным паролем, томом в /var/lib/postgresql/data и портом 15440:5432.
- 2. Запустите конечный exam-job из alpine:3.21 в exam-net с DB_HOST=exam-db. Подключите exam-input к /input readonly и скопируйте source.csv в /tmp/result.csv контейнера.
- 3. Сохраните source.csv из exam-input в result.csv тома exam-output через одноразовый контейнер. Подключите том к работающему result-reader в /result readonly.
Разберите ситуации
Двенадцать вопросов проверяют выбор команды и судьбу данных. У каждого ответа есть отдельное объяснение. Практические задания и эта самопроверка дополняют друг друга.