2017-01-13 1 views
1

Я экспериментирую с Ruby on Rails и Docker, следуя this учебным пособиям. В Постройте раздел Project Вы можете видеть, что Rails подмостей запускаются сРельсы леса с докером и владением файлом

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

И сразу же после этого,:

sudo chown -R $USER:$USER . 

Чтобы получить доступ к сгенерированным файлам, поскольку Docker создает их корня.

Как я могу опустить изменение разрешений каждый раз? Скажем, я хочу, чтобы создать простой файл переноса с помощью:

docker-compose run web rails g migration create_users 

кажется непрактичным, чтобы изменить собственность после каждой простой команды, как это, но в каждом учебнике/источник я нашел НИКТО переговоры по этому поводу.

ответ

1

У меня была такая же проблема, и основная проблема для меня была sublime-text не удалось редактировать файлы, принадлежащие root. Поэтому я решил использовать sublime-text как root, чтобы я мог удобно редактировать любые файлы проекта. Для этого выполните в своей оболочке:

gksu subl 

Это решило мою проблему. Надеюсь, он решил вашу.

ОБНОВЛЕНО

Ok. Я нашел решение, которое не зависит от любого редактора Ruby или IDE. Итак, вам нужно добавить своего текущего пользователя ubuntu в группу пользователей докеров, чтобы вы могли выполнять команды докеров в качестве своего пользователя, а не root.

Для начала вам может потребоваться добавить группу докеров, если она не существует (но она должна существовать в настоящее время). В вашей оболочке выполнить

sudo groupadd docker 

Добавить текущего пользователя в докер группе

sudo gpasswd -a ${USER} docker 

Перезапустите демон докер

sudo service docker restart 

или

sudo service docker.io restart 

(зависит от вашей системы)

Активируйте группы пользователей. Для этого либо выполнить LOG OUT/войти или в оболочке

newgrp docker 

Затем добавьте в конец вашего dockerfile

USER <your_user_name> 

или

USER <your_user_id> 

Теперь вы могут выполнять команды, такие как

docker-compose run web rails g migration SomeMigration 

без sudo, но как ваш текущий пользователь.

И файлы, созданные этими командами, будут принадлежать вашему текущему пользователю, а не root.

+0

Я использую RubyMine, но все же идея выглядит хорошо, и я не думал об этом. –

+0

Найден и протестирован на моем собственном проекте альтернативное решение, которое не зависит от любого редактора Ruby или IDE. Пожалуйста, попробуйте и не забудьте принять мой ответ, если он вам поможет. – VAD