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

Bitnami rails docker container: wkhtmltopdf:55:in `initialize': Permission denied @ rb_sysopen -

我正在尝试使用 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 compose yml 文件是

version: '2'
services:
  mariadb:
    image: docker.io/bitnami/mariadb:10.3
    environment:
      - ALLOW_EMPTY_PASSWORD=yes

  myapp:
    tty: true # Enables debugging capabilities when attached to this container.
    image: docker.io/bitnami/rails:6
    environment:
      - DATABASE_HOST=mariadb
      - DATABASE_NAME=my_app_development
    depends_on:
      - mariadb
    ports:
      - 3000:3000
    volumes:
      - .:/app   

官方docker图片的link是:https://hub.docker.com/r/bitnami/rails/

完成一些研究后发现我们需要使用 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"

docker-compose.yml

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/