LoginSignup
0
0

More than 5 years have passed since last update.

データ連携の平成世代sftpクライアントだってコンテナになりたい令和元年のtips

Last updated at Posted at 2019-04-10

俺です

昭和の僕が思い浮かぶ外部連携といえばftpです。全銀tcp/ip最高みたいな話です。
sftpクライアントなコンテナを使い、他のサーバからファイルをgetしてから後続のシェルコマンドやスクリプトで何かしたい。というアレがアレなものをdocker-composeのvolumeを使い、dockerホストにsftpで取得したファイルを保管して動かすtipsです

sftpクライアント用のコンテナにはこちらを使います。

定義

  • docker-compose.yml

sftpコマンドのワンライナーをcommandに埋めるのはしんどいのでbatchfileをreadします.

version: "3"
services:
  sftpclient:
    image: chartedcode/alpine-sftp-client
    command: sshpass sftp -i /tmp/.ssh/id_rsa -oStrictHostKeyChecking=no -b /tmp/sftp_job_script sftpsaikou@127.0.0.1
    volumes:
      - .:/tmp:ro
      - /mnt/data:/mnt/data
  subsequent_job_a:
    image: ubuntu:latest
    command: ls -l /mnt/data && echo "sftpは最高だぜ"
    depends_on:
      -  sftpclient
    volumes:
      - /mnt/data:/mnt/data
  • sftp_job_script

docker-composeと同一ディレクトリにbatchfileを作ります。(パス分けてもいいんですけども)

ls
lcd /mnt/data
get unko.csv
bye

実行例

$ docker-compose -f docker-compose.yml up
Starting jobuser_sftpclient_1 ... done
Recreating jobuser_cron_job_1 ... done
Attaching to jobuser_sftpclient_1, jobuser_cron_job_1
sftpclient_1  | sftp> ls
sftpclient_1  | sftp> lcd /mnt/data
sftpclient_1  | sftp> get unko.csv
sftpclient_1  | sftp> bye
jobuser_sftpclient_1 exited with code 0
cron_job_1    | total 0
cron_job_1    | -rw-r--r-- 1 root root 0 Apr 10 16:49 unko.csv
cron_job_1    | sftpは最高だぜ
jobuser_cron_job_1 exited with code 0

良いデータ連携ライフを!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0