Dockerビルドの実行中に作業しているリポジトリをプルしようとしているので、 このチュートリアル に従って、Dockerfile
に追加しました
# this is our first build stage, it will not persist in the final image
FROM ubuntu as intermediate
# install git
RUN apt-get update \
apt-get upgrade \
apt-get install git
# add credentials on build
RUN mkdir ~/.ssh && ln -s /run/secrets/Host_ssh_key ~/.ssh/id_rsa
# make sure your domain is accepted
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.org >> /root/.ssh/known_hosts
RUN git clone [email protected]:my-repo/myproject.git
FROM ubuntu
# copy the repository form the previous image
COPY --from=intermediate /your-repo /srv/your-repo
docker-compose.yml
に追加しました
secrets:
Host_ssh_key:
file: ~/.ssh/id_rsa
そして私は追加しています
secrets:
- Host_ssh_key
サービスの1つ。
これはローカルでの使用に限られているため(本番環境に展開または使用する予定はありません。テストするだけです)、この方法で使用しても構いません-現在ビルドが失敗するために動作する場合エラーのあるgitインストールステージ
E:更新コマンドは引数を取りません
エラー:サービス 'web'の構築に失敗しました:コマンド '/ bin/sh -c apt-get update apt-get upgrade apt-get install git'はゼロ以外のコードを返しました:100
私は何が欠けていますか?
これを分析しすぎています。単純なタイプミスです。する必要があります:
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y git
これらは3つの個別のコマンドです。
いくつかの考え:
apt-get install git
をapt-get install --assume-yes git
に置き換えます。 --assume-yes
がなければ、確認を求めるプロンプトが表示されますが、これを与えることはできず、それを理解して「NO」を意味すると仮定するのに十分賢明です。0600
であることを確認しました。それをコピーして、具体的にはchmod 0600 ~/.ssh/id_rsa
だけを確認します。全体として、あなたのDockerfileは非常に賢く見え、私はそれを読んで新しいアイデアを得ました。