【Docker】Dockerfileでexpectコマンドを使う

gitリポジトリをDockerfileでcloneしたかったのがきっかけでした。

GitBucketからcloneしたかったのですが、HTTPS経由でのクローンしかできなかったので、ユーザー名とパスワードを打つ必要がありました。

そこで、Dockerfile内でexpectコマンドを使おうとしていくつかハマったので、解決策を書いておきます。

こちらのページを参考にしました。

フォーマット

RUN expect -c "\
    set timeout 60;\
    spawn git clone -b master https://ドメイン/リポジトリ.git;\
    expect \"Username for\";            send \"ユーザー名\r\";\
    expect \"Password for\";            send \"パスワード\r\";\
    expect eof;\
    "

気をつけること

  • 改行コードは\rで指定すること
  • 末尾にはセミコロンを付けること
  • 最後にeofで終了を待ち受けること

今思いましたが、BASIC認証ならURLにユーザー名とパスワード含めることができそうですよね。

セキュリティ的にアレかもしれませんが、問題なければやってみようと思います。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする