私はGitHubに介して、プライベートリポジトリNPMパッケージをインストールしようとしています:Dockerコンテナー非rootユーザーでGitHubプライベート・リポジトリーをクローンする?
npm install --save-dev MyCompany/MyRepository#my-branch
それは私のホストシステムに適しています。ただし、docker-compose
を使用してDockerのすべてのコンテナを整理します。特にnode
です。
当社のGitHubリポジトリはプライベート1つであるので、私はdocker-compose.yml
スニペット(簡体字)、次のようにSSHエージェント転送を設定を示しています
version: '2'
services:
node:
build: docker/node
environment:
- SSH_AUTH_SOCK=/ssh-agent
volumes:
- $SSH_AUTH_SOCK:/ssh-agent
user: "${UID}:${GID}"
私たちは、ファイルのパーミッションでいくつかの問題を防ぐために、ホストUIDとGIDを使用しています。これらの変数は、docker-compose run
コマンドを起動する前にエクスポートされます。しかし
、私たちは私たちのコンテナからinstallコマンドを起動してみてください:
docker-compose run --rm --no-deps node bash -ci 'npm install'
私たちは、接続の問題(Error connecting to repository. Please, check the url.
)を得ました。私たちは今、SSH接続の問題を取得
docker-compose run --rm --no-deps node bash -ci 'ssh -T [email protected]'
そして:
んが、ユーザーがUID 1000年
のために存在していないことが関係している
私たちは、直接SSH接続をテスト?よく分かりません。
解決策の1つは、コマンドを起動する前にホストUIDを使用してダミーユーザーを作成することです。それでも、どうすれば作れますか? (私はUID環境変数へのアクセスを持っていないとして)私は、ビルド時にそれを行うことができず、コマンドを実行するときに、私がしようとした場合、私が得た:
docker-compose run --rm --no-deps node bash -ci "sudo"
sudo: unknown uid 1000: who are you?
またはその他のソリューションがありますか?
"ファイルアクセス権に関するいくつかの問題を防ぐためにホストUIDとGIDを使用しています"という例がありますか? – Salem
'user:" $ {UID}:$ {GID} "'行なしではどのように動作しますか? –
私は、この '$ {UID}:$ {GID}'の部分と私が見つけた解決策についてブログ記事を書いています:https://www.jonathan-petitcolas.com/2017/01/26/yarn-npm -install-within-docker-container.html –