FTP в существующие Docker-контейнеры
Я смотрю, можно ли каким-либо образом FTP в уже существующий контейнер Docker? Например, я использую https://github.com/dockerfile/ghost в сочетании с https://github.com/jwilder/nginx-proxy, и после того, как я разверну / соберу контейнер, я бы хотел, чтобы пользователь мог подключиться к FTP в контейнере с Ghost, чтобы они могли загружать дополнительные файлы, такие как темы, таблицы стилей и т. д. Каков наилучший метод для достижения этой цели? Заранее спасибо!
2 ответа
У вас есть несколько вариантов:
- запустите ftp в контейнере Ghost и выставьте порт
- использовать каталог хоста для хранения пользовательского контента и предоставления ему FTP хосту (не лучший выбор)
- сопоставить один и тот же каталог хоста как с контейнером Ghost, так и с сервером FTP
Лично я думаю, что последний является лучшим и самым трудоемким, хотя преимущества в конечном итоге того стоят. Я делаю предположение, что загруженный контент должен сохраняться после завершения контейнера, поэтому я рекомендую использовать сопоставленный каталог хоста, если это не тот случай, когда вы можете использовать связанные тома между контейнером FTP и контейнером Ghost.
Вероятно, самый "докерский" способ сделать это - запустить контейнер для вашего ftp-сервера (что-то вроде этого https://github.com/gizur/docker-ftpserver) и отдельный для ghost, а затем смонтировать общий объем.
Лучший способ синхронизировать их - использовать docker-compose.yml версии 2 https://docs.docker.com/compose/compose-file/
Файл docker-compose.yml может выглядеть примерно так:
version: '2'
services:
ghost:
build:
context: ./ghost
ports:
- "80:80"
- "443:443"
volumes:
- "ftpsharevolume:/mnt/ftp"
depends_on:
- ftp
ftp:
image: someftpdockerimage
volumes:
- "ftpsharevolume:/srv/ftp"
ports:
- "21:21"
- "20:20"
volumes:
ftpsharevolume:
driver: local