LoginSignup
93
88

More than 5 years have passed since last update.

Dockerで実行ユーザーとグループを指定する

Last updated at Posted at 2016-11-29

Docker内部でbundle exec rails g ...などとすると、常にroot権限でファイルが作成されるため、困っていた。

この問題が起きるのはLinuxだけかもしれない。

解決策その1 Dockerfileに記述

DockerfileでDockerを実行するユーザーとグループを指定できる。
ドキュメントにはUSER postgresという記述しか無いが、グループも指定できる。

Dockerfile
USER 1000:1000

ただこの方法だと決め打ちになってしまうので、次の方法の方が良い。

解決策その2 コマンドの引数で指定

docker run -u 1000:1000 debian bash

この方法であれば、環境変数で指定できる。

解決策その3 docker-compose.ymlで指定

これを探していた。
原理は一緒なので、下記でOK

docker-compose.yml
web:
  image: debian
  user: "${UID}:${GID}"

UID=${UID} GID=${GID} docker-compose up

または、UIDのところで怒られるけど

export UID=${UID}
export GID=${GID}
docker-compose up

でも良い。

シェル変数を環境変数として外に出すってことなのかな?

動作環境

Arch Linux

Client:
Version: 1.12.3
API version: 1.24
Go version: go1.7.3
Git commit: 6b644ec
Built: Thu Oct 27 19:42:59 2016
OS/Arch: linux/amd64

Server:
Version: 1.12.3
API version: 1.24
Go version: go1.7.3
Git commit: 6b644ec
Built: Thu Oct 27 19:42:59 2016
OS/Arch: linux/amd64

関係ないですが、Arch Linux良いですね。
Dockerさえあれば、母艦のOSが何でも良い世界が最高です。

参考

93
88
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
93
88