Rails脚手架与码头工人和文件所有权

时间:2017-01-13 09:29:25

标签: ruby-on-rails ruby docker docker-compose

我在this教程之后尝试使用Ruby on Rails和Docker。在构建项目部分中您可以看到Rails脚手架与

一起运行
docker-compose run web rails new . --force --database=postgresql --skip-bundle

紧接着之后:

 sudo chown -R $USER:$USER .

要访问生成的文件,因为Docker将它们创建为 root

如何省略每次更改权限?让我们说我想使用以下方法创建简单的迁移文件:

docker-compose run web rails g migration create_users

在像这样的每个简单命令之后修改所有权似乎是不切实际的,但在每个教程/来源中我都没有发现任何人谈论它。

1 个答案:

答案 0 :(得分:2)

我已经解决了同样的问题,而我的主要问题是sublime-text无法编辑root拥有的文件。所以我的解决方案是以sublime-text为根,我可以轻松编辑任何项目文件。要在shell中执行此操作:

gksu subl

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

<强>已更新

确定。我发现解决方案不依赖于任何Ruby编辑器或IDE。因此,您需要将当前的ubuntu用户添加到docker用户组,因为您可以将docker命令作为其用户运行,而不是root

首先,如果它不存在,您可能需要添加docker组(但它现在应该存在)。在你的shell执行

sudo groupadd 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但是作为您当前的用户。

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