繁体   English   中英

带有 docker 和文件所有权的 Rails 脚手架

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM