【问题标题】:Docker Permission deniedDocker 权限被拒绝
【发布时间】:2023-03-22 22:30:01
【问题描述】:

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

请帮助我为什么我无法编辑我的文件。

【问题讨论】:

  • 一个好的信息是在文件上做ls -l。它将赋予确切的权限访问权限

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


【解决方案1】:

这里只是做一些假设,希望我是对的..

可能你在容器内使用的用户是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

【讨论】:

  • 这里的uid和gid是什么
猜你喜欢
  • 2020-08-31
  • 2021-11-05
  • 2022-01-18
  • 2021-04-12
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多