Docker权限被拒绝

时间:2018-02-09 07:45:33

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

我正在尝试通过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文件时,它会告知权限被拒绝。

请帮我解释为什么我无法编辑文件。

1 个答案:

答案 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