Skip to content

📂 FTP Server (vsftpd)

概要

FTP (File Transfer Protocol) は、ネットワーク上でファイルを転送するための標準的なプロトコルです。 Docker Infrastructureのボーナス課題では、vsftpd (Very Secure FTP Daemon) を使用してFTPサーバーコンテナを構築し、WordPressのファイルを直接操作できるようにします。

💡 なぜ必要なのか?(導入メリット)

Dockerの仕様上、コンテナ内のデータはボリューム(ホストの特定のディレクトリ)に保存されます。 通常、ファイルを編集したりプラグインを手動で追加したりする場合、以下のどちらかの方法が必要です:

  1. ホストOSで sudo 権限を使ってボリュームディレクトリを直接いじる(権限トラブルが起きやすい)。
  2. SSHや docker exec でコンテナ内に入ってCUIで操作する(面倒)。

FTPサーバーを導入し、WordPressと同じボリュームを共有させることで、FileZillaなどのFTPクライアントソフトを使って、GUIで簡単にファイルをアップロード・編集できるようになります。

⚙️ 仕組みとアーキテクチャ

FTPサーバーコンテナを、WordPressコンテナと同じボリューム(wp-content等)にマウントします。

実装のポイント

  • ボリューム共有: docker-compose.yml で、WordPressコンテナと同じボリュームをFTPコンテナにもマウントする。
  • ユーザー管理: FTP接続用のユーザーとパスワードを設定し、そのユーザーがファイルへの書き込み権限を持つようにする(www-dataとの権限調整が重要)。
  • パッシブモード対応: Docker環境ではポート転送が複雑なため、FTPのパッシブモード設定(pasv_min_port, pasv_max_port, pasv_address)を適切に行う必要がある。
  • セキュリティ: vsftpdは "Very Secure" の名の通り安全性が高いが、SSL/TLS (FTPS) を強制する設定にするとさらに良い。

✅ 動作確認方法 (レビュー用)

  1. 接続テスト: ホストOSからFTPクライアント(ftpコマンドやFileZilla)で接続できることを示す。
    bash
    ftp localhost
    # ユーザー名とパスワードを入力
  2. ファイル操作テスト:
    • FTPで空のファイル(例: test-ftp.txt)をアップロードする。
    • ブラウザで https://local.dev/test-ftp.txt にアクセスし、そのファイルが見える(またはWordPressコンテナ内から ls で見える)ことを確認する。
    • これにより、FTPコンテナとWordPressコンテナが同じボリュームを共有していることの証明になる。

🔗 参考リンク

Released under the MIT License.