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
Другие вопросы по тегам