記載日 : 2023/12/31
備忘録として、FTPサーバを用意する手順を記載します。
なお、FTPサーバは stilliard/docker-pure-ftpd のdocker imageを使って起動します。
環境
OS : Ubuntu 22.04
dockerインストール済
docker-composeインストール済
VSCodeインストール済(拡張機能からGit Graphをインストール済)
ファイル構成
project
|
|- docker-compose.yml
|
|- sample.txt
作業 (計8分)
0.FTPサーバへアップロードするファイルを作成する (2分)
sampple.txtをあらかじめ用意する。
test1
test2
FTPサーバの動作確認をするために、lftp(FTPクライアントツール)をインストールする。
sudo apt update
sudo apt install lftp
1.FTP用のdocker composeファイルを作成する (2分)
FTPサーバを用意するにあたり、stilliard/pure-ftpdのdocker imageを使ったdocker-compose.ymlファイルを作る。ファイルの記述は以下の通り。
なお、30000~30009のポートは、このDockerイメージのデフォルト・パッシブ・ポートがアサインされているために必要らしい。
version: '3'
services:
ftp_server:
image: stilliard/pure-ftpd
container_name: ftp-server
ports:
- "21:21"
- "30000-30009:30000-30009"
environment:
- PUBLICHOST=127.0.0.1
- FTP_USER_NAME=uname
- FTP_USER_PASS=uP@ssw0rd
- FTP_USER_HOME=/home/ubuntu # "/"だけだとFTPサーバへログインできない
restart: always
docker-compose.ymlファイルが容易で来たら、以下コマンドでFTPサーバを起動する。
docker compose up -d
2.FTPサーバへのファイルアップロード (2分)
lftpを使ってFTPサーバへログインし、任意のディレクトリにsample.txtファイルをアップロードする。
lftp # lftpのターミナルが開く
lftp:~> open -u uname,uP@ssw0rd ftp://localhost/ # ログイン
lftp:~> mkdir files # FTPサーバにディレクトリ作成
lftp:~> cd files # 移動
lftp/files:~> PUT ./sample.txt # sample.txtをFTPサーバへアップロード
lftp/files:~> exit
3.動作確(ファイルダウンロード)(2分)
それでは、FTPサーバのsample.txtをダウンロードしてみようと思う。
curl -u [username]:[password] -o [/path/to/download] [ftp://url/to/uploadedfile] のコマンドでファイルをダウンロードする。
curl -u uname:uP@ssw0rd -o ./sam.txt ftp://localhost/files/sample.txt
あるいは、lftpでダウンロードすることもできる。
mkdir download
cd download
lftp
lftp:~> open -u uname,uP@ssw0rd ftp://localhost/
lftp:~> get ./files/sample.txt
lftp:~> exit
ls # sample.txtが表示され、ダウンロードできているのを確認できる。
参考にさせて頂いたサイト
・Pure-ftpdとは
https://wiki.archlinux.jp/index.php/Pure-FTPd
・Pure-ftpd Serverのdocker image
https://github.com/stilliard/docker-pure-ftpd
・dockerインストール後に、docker composeコマンドでpermission denyエラーが出るのを解決する
https://qiita.com/Nw3965/items/8e75da0012cb7a451cc2