私はDockerfileを作成しています。このファイルの一部として、git repoを渡すオプションをエンドユーザに与えたいと思っています。gitクローンを実行しているシェルスクリプトに変数を渡しているDocker
私はthis SO postといくつかの他のサイトを見ましたが、git clone
の構文に固執しています。
git cloneコマンドは、その一部である変数にdocker build
ステージの値が含まれていないため、エラーを返します。
は私が
#!/bin/bash
git clone $1 /app
と私のDockerfileで
私はこのラインを持っているgitclone.shと呼ばれるこのbashスクリプトを持っている:RUN ./gitclone.sh $LOCATION
シェルスクリプトを実行するために必要な権限を持つ、それが動作します実際のリポジトリを渡しているので、コンテナ内から実行しています。
fatal: repository '/app' does not exist
ディレクトリがあるが、$1
はコマンドが動作しないために、空である:私は次のエラーを取得するドッカー構築フェーズで
質問 ドッカーファイルを機能させるにはどうすればよいですか?私はそれをしたい所望の出力:
docker run -e LOCATION=https://github.com/something.git -d jwknz/pg02
UPDATE CMD ["../gitclone.sh","$LOCATION"]
代わりのRUN ./gitclone.sh $LOCATION
はそれを修正しない含まれているために、私のDockerfileを変更します。
Dockerファイルは作成されますが、docker run
コマンドの実行後にコンテナが停止します。
私はあなたがやろうとしていることを本当に理解していません.Dockerfileは画像をどのように作成するのかをDockerに伝え、 'docker run'は既に構築された画像から新しいコンテナを開始します。 'RUN'コマンドは、画像の構築中に実行されます。イメージの構築中に実行コマンドに環境変数を渡してしまったのですか、何か不足していますか? –
私が望むのは、dockerを実行してgit URLを取得し、docker runでクローンしますが、-eパラメーターを使用して渡したい場合です。 –
OK。次に、イメージの構築中に、しかしそこからコンテナの開始中にレポをクローンしたくないです。コンテナの起動時に実行されるentrypoint.shスクリプトを定義できます。私はこれを少し答えて文書化しようとします。 –