質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

877閲覧

docekrでpdfの投稿ができない(pdfをpngに変換したい)

denisov

総合スコア6

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/06/14 22:13

□解決したいこと

dockerの初心者です。

現在、dockerをrailsアプリケーションに導入しようと考えております。

docker-composeでdockerを起動し、localhostで投稿しようとしたところ、pdf投稿のみできません。

doker導入前の正しい挙動

https://gyazo.com/b055fb77c75f9952b3256743d0677fc0

docker-compose時の挙動

https://gyazo.com/11fdbcefd336a4ae84bca8eb818442ab

状況の確認

  • 当該、pdfの投稿はcarrier waveとrmagicを用いて、pdfの投稿をしております。
  • 投稿した際、pdfをpngに変換してトップページに表示するしようとしております。
  • jpegやpngの投稿は問題なくできます。
  • 指定したディレクトリの中にpdfは保存されていました。https://gyazo.com/fc0a517116caff7f1b8c1f9b6237725d
  • pdfをpngに変換したファイルは生成されていなかった。
  • データベースにも投稿がありませんでした。

→以上より、まずはpdfをpngに変換できないことを解決したいのですが、アドバイスいただけましたら幸いです。

docker-compose時のターミナルの内容

html

1web_1 | Started POST "/tips" for 192.168.80.1 at 2021-06-14 21:54:59 +0000 2web_1 | Cannot render console from 192.168.80.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1 3web_1 | Processing by TipsController#create as HTML 4web_1 | Parameters: {"authenticity_token"=>"Ek4Dphv2GvGYfUQ+7FHi1WYHk6v+kMUOkV/q00JKm/lYH6TKGTjYetpqn4Bnho68VRm997RGIMSAQtcph0NRIg==", "tip"=>{"title"=>"テスト", "name"=>"test", "category_id"=>"3", "image"=>#<ActionDispatch::Http::UploadedFile:0x00007ff5bc2067f0 @tempfile=#<Tempfile:/tmp/RackMultipart20210614-1-82mpl8.pdf>, @original_filename="名称未設定のコピー.pdf", @content_type="application/pdf", @headers="Content-Disposition: form-data; name=\"tip[image]\"; filename=\"\xE5\x90\x8D\xE7\xA7\xB0\xE6\x9C\xAA\xE8\xA8\xAD\xE5\xAE\x9A\xE3\x81\xAE\xE3\x82\xB3\xE3\x83\x92\xE3\x82\x9A\xE3\x83\xBC.pdf\"\r\nContent-Type: application/pdf\r\n">, "description"=>"tst"}, "commit"=>"投稿する"} 5web_1 | User Load (1.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1 6web_1 | (0.6ms) BEGIN 7web_1 | ↳ app/models/tip_tag.rb:20:in `block in save' 8web_1 | User Load (0.6ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1 9web_1 | ↳ app/models/tip_tag.rb:20:in `block in save' 10web_1 | Tag Load (1.7ms) SELECT `tags`.* FROM `tags` WHERE `tags`.`name` = 'test' ORDER BY `tags`.`id` ASC LIMIT 1 11web_1 | ↳ app/models/tip_tag.rb:26:in `block (2 levels) in save' 12web_1 | DEPRECATION WARNING: Uniqueness validator will no longer enforce case sensitive comparison in Rails 6.1. To continue case sensitive comparison on the :name attribute in Tag model, pass `case_sensitive: true` option explicitly to the uniqueness validator. (called from block (2 levels) in save at /archtips/app/models/tip_tag.rb:27) 13web_1 | Tag Exists? (2.2ms) SELECT 1 AS one FROM `tags` WHERE `tags`.`name` = BINARY 'test' AND `tags`.`id` != 1 LIMIT 1 14web_1 | ↳ app/models/tip_tag.rb:27:in `block (2 levels) in save' 15web_1 | TipTagRelation Load (4.0ms) SELECT `tip_tag_relations`.* FROM `tip_tag_relations` WHERE `tip_tag_relations`.`tip_id` IS NULL AND `tip_tag_relations`.`tag_id` = 1 ORDER BY `tip_tag_relations`.`id` ASC LIMIT 1 16web_1 | ↳ app/models/tip_tag.rb:28:in `block (2 levels) in save' 17web_1 | Tag Load (1.5ms) SELECT `tags`.* FROM `tags` WHERE `tags`.`id` = 1 LIMIT 1 18web_1 | ↳ app/models/tip_tag.rb:29:in `block (2 levels) in save' 19web_1 | TipTagRelation Exists? (1.9ms) SELECT 1 AS one FROM `tip_tag_relations` WHERE `tip_tag_relations`.`tag_id` = 1 AND `tip_tag_relations`.`tip_id` IS NULL LIMIT 1 20web_1 | ↳ app/models/tip_tag.rb:29:in `block (2 levels) in save' 21web_1 | (0.9ms) COMMIT 22web_1 | ↳ app/models/tip_tag.rb:19:in `save' 23web_1 | Redirected to http://localhost:3000/ 24web_1 | Completed 302 Found in 443ms (ActiveRecord: 14.7ms | Allocations: 13766) 25web_1 | 26web_1 |

以下、コード

ruby

1database.yml 2 3default: &default 4 adapter: mysql2 5 encoding: utf8 6 pool: <%= ENV.fetch('RAILS_MAX_THREADS') { 5 } %> 7 username: <%= ENV.fetch('DB_USERNAME', 'root') %> 8 password: <%= ENV['MYSQL_ROOT_PASSWORD'] %> 9 socket: /tmp/mysql.sock 10 host: db 11 12development: 13 <<: *default 14 database: archtips_development 15 16test: 17 <<: *default 18 database: test2archtips_test 19 20production: 21 <<: *default 22 database: archtips_production 23 username: root 24 password: <%= ENV['DATABASE_PASSWORD'] %> 25 socket: /var/lib/mysql/mysql.sock

ruby

1docker-compose.yml 2 3version: '3' 4 5services: 6 db: 7 image: mysql:5.6 8 environment: 9 MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} 10 ports: 11 - "4306:3306" 12 volumes: 13 - ./db/mysql/volumes:/var/lib/mysql 14 15 web: 16 build: . 17 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 18 volumes: 19 - .:/archtips 20 ports: 21 - 3000:3000 22 depends_on: 23 - db 24 env_file: .env 25 tty: true 26 stdin_open: true

ruby

1Dockerfile 2FROM ruby:2.6.5 3RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs 4 5RUN mkdir /archtips 6WORKDIR /archtips 7 8COPY Gemfile /archtips/Gemfile 9COPY Gemfile.lock /archtips/Gemfile.lock 10 11RUN gem install bundler 12RUN bundle install 13COPY . /archtips

ruby

1image_uploader.rb 2class ImageUploader < CarrierWave::Uploader::Base 3 # Include RMagick or MiniMagick support: 4 include CarrierWave::RMagick 5 include CarrierWave::MiniMagick 6 # process resize_to_fit: [1000, 1000] 7 8 # Choose what kind of storage to use for this uploader: 9 if Rails.env.development? 10 storage :file 11 elsif Rails.env.test? 12 storage :file 13 else 14 storage :fog 15 end 16 17 if Rails.env.development? || Rails.env.test? 18 storage :file 19 else 20 storage :fog 21 end 22 23 # Override the directory where uploaded files will be stored. 24 # This is a sensible default for uploaders that are meant to be mounted: 25 def store_dir 26 # "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 27 if Rails.env.test? 28 "uploads_#{Rails.env}/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 29 else 30 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 31 end 32 end 33 34 35 # Create different versions of your uploaded files: 36 version :thumb do 37 process convert: ['png', 0] 38 process resize_to_limit: [1000, 1000] 39 end 40 41 42end

ruby

1tips_controller.rb 2class TipsController < ApplicationController 3 before_action :authenticate_user!, except: [:index, :show, :search, :detail_search, :trend] 4 before_action :search_tip, only: [:index, :search, :detail_search] 5 6 def index 7 @tips = Tip.includes(:user).order(updated_at: :DESC) 8 end 9 10 def new 11 @tip = TipTag.new 12 end 13 14 def create 15 @tip = TipTag.new(tip_params) 16 tag_list = params[:tip][:name].split(',') 17 if @tip.valid? 18 @tip.save(tag_list) 19 redirect_to root_path 20 else 21 render :new 22 end 23 end 24 25 <省略> 26 27 private 28 29 def tip_params 30 params.require(:tip).permit(:title, :category_id, :description, :image, :name, :id, :_method, :authenticity_token, :commit, 31 :tip).merge(user_id: current_user.id) 32 end 33 34<省略> 35 36 def search_tip 37 @t = Tip.ransack(params[:q]) 38 @category = Category.where.not(id: 1) 39 end 40end

□仮説及び調べたこと

pdfは保存できているが、pngが生成していなかったことから、変換するpdf⇒pngに変換するrmagic,もしくはcarrierwaveの記述に問題があるのではないか?と思い調べてみました。

https://qiita.com/minojiro/items/879616c3569277572859

上記の記事ではbundleinstall前に'apk add'を記述することでRmagic,Carriewwaveを使用可能とのことでした。こちらを参考にdockerfileを変更しました。

ruby

1dockerfile 2 3FROM ruby:2.6.5 4RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs 5 6RUN mkdir /archtips 7WORKDIR /archtips 8 9COPY Gemfile /archtips/Gemfile 10COPY Gemfile.lock /archtips/Gemfile.lock 11 12#以下を追加 13WORKDIR /tmp 14RUN apk add --update --no-cache curl && \ 15 curl -O "http://dl-4.alpinelinux.org/alpine/edge/community/x86_64/imagemagick6-{6.9.9.47-r0,c%2B%2B-6.9.9.47-r0,dev-6.9.9.47-r0,doc-6.9.9.47-r0,libs-6.9.9.47-r0}.apk" && \ 16 apk add --no-cache \ 17 imagemagick6-c%2B%2B-6.9.9.47-r0.apk \ 18 imagemagick6-dev-6.9.9.47-r0.apk \ 19 imagemagick6-libs-6.9.9.47-r0.apk \ 20 imagemagick6-6.9.9.47-r0.apk 21 22RUN gem install bundler 23RUN bundle install 24COPY . /archtips

□結果

挙動に変化はありませんでした。

リンクの表題にもありように、alpineを使ってrmagicを使用したいというのが趣旨のもので、本件はalpineを使っていません。そのため、本件とは関係がないようです。

ただ、そのほかに調べてみても有効な手掛かりは得られませんでした。

docker初心者ですので、根本的なところを見落としていることや、理解不足のところがあるかもしれません。

上記を含めて、アドバイスいただける方いらっしゃいましたら、よろしくお願い申し上げます。

□環境

ruby 2.6.5p114

rmagick (4.2.2)

rails (6.0.3.7)

carrierwave (2.2.2)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

私自身、まだdockerに関しての知識が浅いため、一度この質問はクローズさせていただきます。もう一度、docker周りを勉強し、知識をつけてから再度、挑戦したいと思います。
ご確認いただいた方々には申し訳ございませんが、よろしくお願いいたします。

投稿2021/07/22 23:08

denisov

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問