[英]Rails scaffolding with docker and file ownership
我正在按照本教程尝试使用 Ruby on Rails 和 Docker。 在Build the Project部分你可以看到 Rails scaffold 运行
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
在像这样的每个简单命令之后修改所有权似乎不切实际,但在每个教程/来源中,我发现没有人谈论它。
我遇到了同样的问题,对我来说主要问题是sublime-text
无法编辑 root 拥有的文件。 所以我的解决方案是使用sublime-text
作为 root,因为我可以轻松地编辑任何项目文件。 要执行此操作,请在您的 shell 中执行:
gksu subl
那解决了我的问题。 希望它解决了你的问题。
更新
好的。 我找到了不依赖于任何 Ruby 编辑器或 IDE 的解决方案。 所以你需要的是将你当前的 ubuntu 用户添加到 docker users 组,因为你可以以它的用户身份运行 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
但作为您当前的用户。
并且由该命令创建的文件将由您当前的用户拥有,而不是root
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.