リモート Docker 環境でコマンドを実行する方法

リモート Docker 環境で自動的に実行されるのは Docker コマンドのみです。ただし、任意のコマンドをシェルに組み込み、後続のコマンドをシェルコマンドと連結することで、リモート Docker 環境でプログラムにより実行できます。 リモート Docker 環境に SSH で接続するには、setup_remote_docker を使用する CircleCI ジョブに SSH 接続しながら ssh remote-docker を実行するか、run ステップでプログラムから実行します (setup_remote_docker ステップを必ず先に実行します。これを行わないと、SSH コマンドが失敗します)。

この SSH コマンドに、ヘッダーなしの形式、つまり CircleCI ジョブの一部としてコマンドを連結すると、次のようになります。

run: |
 ssh remote-docker \
 echo "this echo command will be executed in the remote Docker environment \
 rather than the initial job container itself"

ここで問題となるのは、SSH シェルに渡すことのできるコマンドは 1 つだけだということです。例えば、 ssh remote-docker touch file1 && touch file2 を実行すると、file1 はリモート Docker 環境に作成されますが、file2 はジョブのローカルコンテナに作成されます。 このため、リモート Docker 環境で複雑なコマンドの組み合わせをプログラム的に実行するには、それらを単一のコマンドとして実行する方法を考える必要があります。

次のドキュメントには、いくつかの適切な手法 (具体的には、"このドキュメント" を使用するか、コマンドをシェルスクリプトに保存して、ssh コマンドへパイプで渡す) が紹介されています。

https://stackoverflow.com/questions/4412238/what-is-the-cleanest-way-to-ssh-and-run-multiple-commands-in-bash

 

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています

コメント

0件のコメント

ログインしてコメントを残してください。