我正在尝试通过docker创建一个rails应用程序。
我的docker-compose.yml文件是:
mysql:
image: mysql:5.6.34
ports:
- "3006:3006"
volumes_from:
- dbdata
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=dev
dbdata:
image: tianon/true
volumes:
- /var/lib/mysql
app:
build: .
environment:
RAILS_ENV: development
ports:
- '3000:3000'
volumes_from:
- appdata
links:
- "mysql"
appdata:
image: tianon/true
volumes:
- ".:/dock_rails_1"
Dockerfile是:
FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs mysql-client
RUN mkdir /dock_rails_1
WORKDIR /dock_rails_1
COPY Gemfile /dock_rails_1/Gemfile
COPY Gemfile.lock /dock_rails_1/Gemfile.lock
RUN bundle install
COPY . /dock_rails_1
我的Gemfile是:
source 'https://rubygems.org'
gem 'rails', '5.0.0.1'
我还创建了空的Gemfile.lock。 在我的终端运行此命令之后: docker-compose运行app rails new。 --force --database = mysql --skip-bundle
每件事情都是正确的。但是我没有编辑到docker创建的所有文件。
当我尝试编辑docker创建的database.yml文件时,它会告知权限被拒绝。
请帮我解释为什么我无法编辑文件。
答案 0 :(得分:0)
在这里做一些假设,希望我是对的..
您在容器内使用的用户可能是root
并且文件是在root
权限下创建的。
尝试使用与主机中相同的uid和gid创建和使用用户。
您可以通过在主机上运行找到您的主机uid / gid:
cat /etc/passwd | grep $USER
将容器用户更改为docker文件中的主机uid和gid:
RUN usermod -u my_users_host_uid container_user
RUN groupmod -g my_users_host_gid container_user