📂 FTP Server (vsftpd)
概要
FTP (File Transfer Protocol) は、ネットワーク上でファイルを転送するための標準的なプロトコルです。 Docker Infrastructureのボーナス課題では、vsftpd (Very Secure FTP Daemon) を使用してFTPサーバーコンテナを構築し、WordPressのファイルを直接操作できるようにします。
💡 なぜ必要なのか?(導入メリット)
Dockerの仕様上、コンテナ内のデータはボリューム(ホストの特定のディレクトリ)に保存されます。 通常、ファイルを編集したりプラグインを手動で追加したりする場合、以下のどちらかの方法が必要です:
- ホストOSで
sudo権限を使ってボリュームディレクトリを直接いじる(権限トラブルが起きやすい)。 - 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) を強制する設定にするとさらに良い。
✅ 動作確認方法 (レビュー用)
- 接続テスト: ホストOSからFTPクライアント(
ftpコマンドやFileZilla)で接続できることを示す。bashftp localhost # ユーザー名とパスワードを入力 - ファイル操作テスト:
- FTPで空のファイル(例:
test-ftp.txt)をアップロードする。 - ブラウザで
https://local.dev/test-ftp.txtにアクセスし、そのファイルが見える(またはWordPressコンテナ内からlsで見える)ことを確認する。 - これにより、FTPコンテナとWordPressコンテナが同じボリュームを共有していることの証明になる。
- FTPで空のファイル(例:
🔗 参考リンク
- vsftpd 公式サイト
- Docker vsftpd (GitHub) - よく参考にされるDocker用vsftpdイメージのドキュメント