質問するログイン新規登録
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

1269閲覧

docker-composeでプライベートなgemのbundle installが失敗する

baban

総合スコア19

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2023/02/04 15:29

0

0

実現したいこと

環境構築で転んでいるので質問させてください。

以下の様にGemfileに書かれているgemのbundle installで転んで、docker-compose buildコマンドの実行に失敗しています。

この原因がわからないので、現状を共有させてください。

.zshrcBUNDLE_GITHUB__COMを設定、ローカルではbundle installに成功しているものです。
これをdocker環境で動かすために、Dockerfileを作って実行してbundle installに失敗しています。

docker-compose buildの失敗メッセージには、以下の記述があります。

Git error: command `git clone 'https://github.com/company/gemname.git'

困っているのは、何か認証に失敗していると思って、bundle installの直前までコメントアウトして、buildしたdockerイメージの中に入ってbundle installを実行すると、その時はbuildに成功してしまうことです。

docker-compose run -it app /bin/sh bundle install

なのに、docker-compose buildに失敗する。

こういう時は、何が原因なんだろうと悩んでいます。

出来る範囲で、環境の情報を以下に共有させていただきます。

よろしくお願いいたします。

実行環境、WSL2環境のUbuntu-22.04

zshrc

1export GIT_TOKEN="XXXXXXXXXXXXXXXXXXXXXXXXX" 2export GIT_USER="myname" 3export BUNDLE_GITHUB__COM="${GIT_USER}:${GIT_TOKEN}"

Gemfile

1gem 'private_gem', git: 'https://github.com/company/private_gem.git'

docker

1version: "3.9" 2services: 3 app: 4 build: . 5 ports: 6 - "3000:3000" 7 command: bundle exec rails s -p 3000 -b '0.0.0.0' 8 tty: true 9 stdin_open: true 10 entrypoint: ./docker/scripts/app_entrypoint.sh 11 env_file: 12 - docker/enviroments/.app.dev 13 environment: 14 - BUNDLE_GITHUB__COM 15

Dockerfile

1FROM ruby:2.5.9 2 3RUN apt-get update -qq && \ 4 apt-get install -y nodejs postgresql-client && \ 5 apt-get install -y openssh-client git 6 7WORKDIR /app 8 9COPY Gemfile /app/Gemfile 10COPY Gemfile.lock /app/Gemfile.lock 11 12RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts 13RUN --mount=type=ssh bundle install -j8 14COPY . /app 15 16ENTRYPOINT ["/app/docker/scripts/app_entrypoint.sh"] 17 18EXPOSE 3000

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

baban

2023/02/05 10:52

それっぽいです、試してお返事いたします
baban

2023/02/05 12:29

`--mount=type=ssh`の記述の意味をよく理解していなかったですね。 sshで認証するのが優先されると解釈して、`BUNDLE_GITHUB__COM`を参照する方向ではなく、sshのキーをうまくやる方向で考えて、うまくいきました、ありがとうございます。 以下の手順でした。 ~/.ssh/ フォルダに ~/.ssh/id_rsa_github を追加 .ssh/config を以下の様に記述を追加 ``` Host * AddKeysToAgent yes Host github.com.sub HostName github.com User git Port 22 IdentityFile ~/.ssh/id_rsa_sub TCPKeepAlive yes IdentitiesOnly yes ``` `docker-compose build --ssh default`を実行。
guest

回答1

0

自己解決

--mount=type=sshの記述の意味をよく理解していなかったですね。
sshで認証するのが優先されると解釈して、BUNDLE_GITHUB__COMを参照する方向ではなく、sshのキーをうまくやる方向で考えて、うまくいきました、ありがとうございます。

以下の手順でした。

~/.ssh/ フォルダに ~/.ssh/id_rsa_github を追加

.ssh/config を以下の様に記述を追加

Host * AddKeysToAgent yes Host github.com.sub HostName github.com User git Port 22 IdentityFile ~/.ssh/id_rsa_sub TCPKeepAlive yes IdentitiesOnly yes

docker-compose build --ssh defaultを実行。

投稿2023/04/18 11:15

baban

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問