与docker和文件所有权的铁路脚手架

按照本教程,我正在尝试使用Ruby on Rails和Docker。 在构build项目部分您可以看到Rails脚手架运行

docker-compose run web rails new . --force --database=postgresql --skip-bundle 

紧接着,

  sudo chown -R $USER:$USER . 

为了访问生成的文件,因为Docker以root身份创build它们。

我怎样才能省略每次更改权限? 比方说,我想用下面的方法创build简单的迁移文件:

 docker-compose run web rails g migration create_users 

在这样的每一个简单的命令后面修改所有权似乎是不切实际的,但在每一个教程中我都发现没有人会谈论它。

我已经经历了同样的问题,对我来说主要的问题是sublime-text不能编辑由拥有的根文件。 所以我的解决scheme是使用sublime-text作为根,我可以舒适地编辑任何项目文件。 要做到这一点在你的shell执行:

 gksu subl 

这解决了我的问题。 希望它解决了你的问题。

更新

好。 我find了不依赖于任何Ruby编辑器或IDE的解决scheme。 所以你需要的是将你当前的ubuntu用户添加到docker用户组中,因为你可以以其用户身份运行docker命令,而不是root

首先,如果Docker组不存在(如果它不存在),则可能需要添加泊坞窗组。 在你的shell执行

 sudo groupadd docker 

将您的当前用户添加到docker组

 sudo gpasswd -a ${USER} docker 

重新启动docker守护进程

 sudo service docker restart 

要么

 sudo service docker.io restart 

(取决于你的系统)

激活用户组更改。 要做到这一点,执行LOG OUT / LOG IN或在你的shell

 newgrp docker 

然后添加到您的dockerfile

 USER <your_user_name> 

要么

 USER <your_user_id> 

现在你可以执行像

 docker-compose run web rails g migration SomeMigration 

没有sudo但作为您当前的用户。

而这些命令创build的文件将由您当前的用户拥有,而不是root