Ruby on rails Bitnami rails docker容器:wkhtmltopdf:55:in`initialize';:权限被拒绝@rb_sysopen-

Ruby on rails Bitnami rails docker容器:wkhtmltopdf:55:in`initialize';:权限被拒绝@rb_sysopen-,ruby-on-rails,docker,wkhtmltopdf,bitnami,Ruby On Rails,Docker,Wkhtmltopdf,Bitnami,我正在尝试使用bitnamis官方rails图像将现有应用程序转换为docker。我正在使用wkhtmltopdf生成PDF。它在没有docker容器的情况下工作,但是在docker容器内我得到了这个错误 Failed to execute: ["/opt/bitnami/ruby/bin/wkhtmltopdf", "--encoding", "UTF-8", "--zoom", "2", &q

我正在尝试使用bitnamis官方rails图像将现有应用程序转换为docker。我正在使用
wkhtmltopdf
生成PDF。它在没有docker容器的情况下工作,但是在docker容器内我得到了这个错误

Failed to execute:
["/opt/bitnami/ruby/bin/wkhtmltopdf", "--encoding", "UTF-8", "--zoom", "2", "--dpi", "1000", "--page-width", "12in", "--page-height", "7.6in", "file:////tmp/wicked_pdf20210523-1-1tprbwc.html", "/tmp/wicked_pdf_generated_file20210523-1-ket44c.pdf"]
Error: PDF could not be generated!
Command Error: /opt/bitnami/ruby/lib/ruby/gems/2.6.0/gems/wkhtmltopdf-binary-0.12.6.5/bin/wkhtmltopdf:55:in `initialize': Permission denied @ rb_sysopen - /opt/bitnami/ruby/lib/ruby/gems/2.6.0/gems/wkhtmltopdf-binary-0.12.6.5/bin/wkhtmltopdf_debian_10_amd64 (Errno::EACCES)
from /opt/bitnami/ruby/lib/ruby/gems/2.6.0/gems/wkhtmltopdf-binary-0.12.6.5/bin/wkhtmltopdf:55:in `open'
from /opt/bitnami/ruby/lib/ruby/gems/2.6.0/gems/wkhtmltopdf-binary-0.12.6.5/bin/wkhtmltopdf:55:in `<top (required)>'
from /opt/bitnami/ruby/bin/wkhtmltopdf:23:in `load'
from /opt/bitnami/ruby/bin/wkhtmltopdf:23:in `<main>'
指向docker官方图像的链接为:


做了一些研究后发现,我们需要使用
chown
更改权限,但无法使其工作。

我创建了
Dockerfile
并自定义了图像,它工作了。目前唯一的问题是每次进行构建时都需要设置权限

Dockerfile

FROM docker.io/bitnami/rails:6
RUN sudo apt update
RUN sudo apt install wget xfonts-75dpi -y 
RUN cd 
RUN sudo apt -y install wget
RUN wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_amd64.deb
RUN sudo apt install ./wkhtmltox_0.12.6-1.buster_amd64.deb -y
#RUN sudo chown -R bitnami:bitnami /opt/bitnami/ruby/lib/ruby/gems/
ENV RAILS_ENV="production"
version: '2'
services:
  mariadb:
    image: docker.io/bitnami/mariadb:10.3
    environment:      
      - MARIADB_ROOT_PASSWORD=my-secret-pw

  myapp:
    tty: true # Enables debugging capabilities when attached to this container.
    #image: docker.io/bitnami/rails:6  
    build: 
      context: .
      dockerfile: Dockerfile  
    environment:
      - DATABASE_HOST=mariadb
      - DATABASE_NAME=my_app_prod     
      - MARIADB_ROOT_PASSWORD=my-secret-pw 
      - RAILSENV=production
    depends_on:
      - mariadb
    ports:
      - 3000:3000
    volumes:
      - .:/app      
    
docker compose.yml

FROM docker.io/bitnami/rails:6
RUN sudo apt update
RUN sudo apt install wget xfonts-75dpi -y 
RUN cd 
RUN sudo apt -y install wget
RUN wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_amd64.deb
RUN sudo apt install ./wkhtmltox_0.12.6-1.buster_amd64.deb -y
#RUN sudo chown -R bitnami:bitnami /opt/bitnami/ruby/lib/ruby/gems/
ENV RAILS_ENV="production"
version: '2'
services:
  mariadb:
    image: docker.io/bitnami/mariadb:10.3
    environment:      
      - MARIADB_ROOT_PASSWORD=my-secret-pw

  myapp:
    tty: true # Enables debugging capabilities when attached to this container.
    #image: docker.io/bitnami/rails:6  
    build: 
      context: .
      dockerfile: Dockerfile  
    environment:
      - DATABASE_HOST=mariadb
      - DATABASE_NAME=my_app_prod     
      - MARIADB_ROOT_PASSWORD=my-secret-pw 
      - RAILSENV=production
    depends_on:
      - mariadb
    ports:
      - 3000:3000
    volumes:
      - .:/app      
    
它可以工作,但在我进行构建之后,我需要执行

docker-compose exec myapp sudo chown -R bitnami:bitnami /opt/bitnami/ruby/lib/ruby/gems/

你有自己的Dockerfile吗?您的图像中是否确实存在
wkhtmltopdf
二进制文件?不,我没有原始dockerfile。我使用的是我们从官方链接安装时自动生成的原始撰写文件。我只添加了pdf库gems。我不知道还需要做什么。我对docker容器知之甚少;虽然它是面向节点的,但它包括构建和运行自定义映像的所有步骤。这通常比尝试使用未修改的语言运行时映像并将代码注入其中更好。(如果您想要一个开发环境,那么rbenv或rvm可能更适合,但要与系统Ruby和其他应用程序隔离。)@DavidMaze当我进入docker控制台并执行
sudo chmod-R 777/opt/bitnami/Ruby/lib/Ruby/gems/2.6.0/gems/
时,它工作正常。您知道如何在撰写文件中设置此选项吗?