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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Docker

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

Q&A

1回答

612閲覧

dockerを使用したデプロイについて

n-s0120

総合スコア1

docker-compose

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2021/08/27 06:52

編集2021/08/27 07:51

前提・実現したいこと

dockerを導入せずにすでに作成済のruby、railsで使用したアプリにdockerを導入したいと考えております。
(AWSを使用)

改めて、別のIPを利用して、デプロイまでは完了しましたが、このアプリにdockerが導入できているかが不明で困っております。

「dockerを利用して、デプロイができているか」の確認方法を教えてほしいです。

該当のソースコード

必要に応じて追記します。

docker

1version: '3' 2 3services: 4 db: 5 image: mysql:5.7 6 environment: 7 # MYSQL_USER: root 8 MYSQL_ROOT_PASSWORD: password 9 ports: 10 - "3306:3306" 11 volumes: 12 - ./db/mysql/volumes:/var/lib/mysql 13 14 web: 15 build: . 16 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 17 volumes: 18 - .:/myapp 19 - gem_data:/usr/local/bundle 20 ports: 21 - 3000:3000 22 depends_on: 23 - db 24 tty: true 25 stdin_open: true 26 27volumes: 28 gem_data:

試したこと

1.docker関係 docker-compose exec web rails db:create db:migrate RAILS_ENV=productionまで終了し、 docker-compose psを行うと、コンテナがUPになっている状況です。 2.Nginx関係 sudo nginx -t が完了。 sudo chown -R ec2-user /var/lib/nginxにより、権限の付与。 sudo systemctl restart nginxにより、Nginxを再起動。 3.デプロイ rails s -e productionを叩き、IPアドレスを入力するとアプリが閲覧可能になっている。

補足情報(FW/ツールのバージョンなど)

初学者のため、何が判断に必要かわかっておりません。
必要な情報がありましたら、教えていただきたいです。

【補足情報1】
docker -v
→ Docker version 20.10.4, build d3cb89e

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

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

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

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

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

yamap55

2021/08/27 06:57

dockerの導入っというのはdockerがインストールされているかどうかで良いのですか? 「docker --version」で何かが表示されればインストールはされているかと思います。(docker-composeコマンドが通っているので動いているとは思いますが) どのようになればdockerが導入された事になるのかは質問者以外にはわからないので、もう少し聞きたい事を明確にしていただけますでしょうか。
yamap55

2021/08/27 07:00

「ruby、railsで使用したアプリ」をdocker上で動かすという事ですかね?? 1を見ると動いているように見えますが、中身がわからないので何とも言えないです。 ただ、3がイマイチよくわからないです。これはコンテナの中ではなく外ですよね?つまり外にもrailsコマンドがあるという事のように思えます。
n-s0120

2021/08/27 07:05

docker -vを打つと、「Docker version 20.10.4, build d3cb89e」が出てきますので、インストールはできているようです。
n-s0120

2021/08/27 07:07

>>「ruby、railsで使用したアプリ」をdocker上で動かすという事ですかね?? 1を見ると動いているように見えますが、中身がわからないので何とも言えないです。 ただ、3がイマイチよくわからないです。これはコンテナの中ではなく外ですよね?つまり外にもrailsコマンドがあるという事のように思えます。 まさしく今回の質問したい点がその点でして、 「デプロイはできているが、このできているデプロイは、コンテナの中でデプロイがされているのか、外でデプロイがされているのか。」(表現が正しいかわかりませんが) という点です。
yamap55

2021/08/27 07:39

どこからどこまでをdockerに任せるのでしょうか? docker-comose.yml を記載すると答えが得やすい気がします。 いずれにしてもコンテナ外のコマンドはコンテナ外のrailsに対しての操作ですので、やりたい事とはずれていると思われます。
n-s0120

2021/08/27 07:56

どこからどこまで、という知識がなく申し訳ないです・・・。 ひとまず、docker-compose.ymlを記述しました。 dockerの構築をした後、サーバーを起動するコマンドを、 「rails s -e production」と勘違いしていたのですが、docker使用時の同種のコマンドはあるのでしょうか?
guest

回答1

0

rails s -e productionを叩き、IPアドレスを入力するとアプリが閲覧可能になっている。

こちらはDockerを利用せずにRailsを起動しています。
これを実行せずに動作確認してください。

投稿2021/08/27 08:13

mather

総合スコア6759

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

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

n-s0120

2021/08/27 08:17

了解しました。 ただ、すでにrails s -e productionを行ってしまっているのですが、このコマンドを止める方法はあるのでしょうか。
mather

2021/08/27 08:19

Ctrl-Cで停止してください。
n-s0120

2021/08/27 08:39

申し訳ありません。言葉足らずでした。 今回、AWSを使用し、EC2でのデプロイを想定しております。 また、テスト環境ではなく、現在、EC2にログインをし、本番環境の構築をしており、恐らく、Ctrl+Cでは停止ができないかもしれないです。
mather

2021/08/27 08:49 編集

状況が見えません。もっと正確に記載しましょう。 - 本番環境(EC2インスタンス内)で rails s -e production & コマンドでサーバーを起動済み。 - 本番環境内に docker-compose で Rails を別に起動して、稼働できているかどうか(外部からアクセス可能か、動作上問題ないか)の確認を行いたい というようなことでしょうか?「別のIP」などのように記載されていますが、IPはそもそも同じインスタンスに複数設定できたりするものなので、インスタンスを具体的に判別して説明してください。
n-s0120

2021/08/27 08:55

初学者のため、どこまでが必要な情報かわかっておらず、申し訳ないです。 【インスタンス】 ・インスタンスA(IP ×××) dockerを使用せず、デプロイ済。 ・インスタンスB(IP ●●●) インスタンスAで作成したものにDockerfileやdocker-compose.ymlを追加したもの。 【その他状況】 ①インスタンスA、Bの両方でrails s -e production コマンドでサーバーを起動済み。 ②本番環境内に docker-compose で Rails を別に起動して、稼働できているかどうか(外部からアクセス可能か、動作上問題ないか)の確認を行いたい。 よろしくお願い致します。
mather

2021/08/27 09:14

「本番環境」というのはBを指すのでしょうか?Aは本番環境とは呼ばない? > 恐らく、Ctrl+Cでは停止ができないかもしれないです。 tmp/pids/server.pid に現在のサーバープロセスのIDが記録されているのであれば、 kill <pid> で停止できると思います。
n-s0120

2021/08/27 09:24

Aも本番環境、Bも本番環境で動かしています。 ただ、Aはdockerなし、Bはdockerありで運用したいです。 killコマンドでpidを消し、再度、アクセスしたところ、問題なく、デプロイしたサイトを見ることができましたが、これはdocker内でデプロイができているのでしょうか。 補足として、 アプリ名/tmp/pidsには、 【kill前】 puma.pids、 puma.state、 server.pids 【kill後】 puma.state となっていました。
mather

2021/08/27 09:33

インスタンスBで docker-compose logs -f web を見てアクセスログが出ていれば、稼働出来ているのではないでしょうか。
n-s0120

2021/08/28 10:25

docker-compose logs -f web を叩いたところ、 web_1 | => Booting Puma web_1 | => Rails 5.2.5 application starting in development web_1 | => Run `rails server -h` for more startup options web_1 | Puma starting in single mode... web_1 | * Version 3.12.6 (ruby 2.5.9-p229), codename: Llamas in Pajamas web_1 | * Min threads: 5, max threads: 5 web_1 | * Environment: development web_1 | * Listening on tcp://0.0.0.0:3000 web_1 | Use Ctrl-C to stop web_1 | - Gracefully stopping, waiting for requests to finish web_1 | === puma shutdown: 2021-08-27 06:23:02 +0000 === web_1 | - Goodbye! web_1 | Exiting web_1 | => Booting Puma web_1 | => Rails 5.2.5 application starting in development web_1 | => Run `rails server -h` for more startup options web_1 | Puma starting in single mode... web_1 | * Version 3.12.6 (ruby 2.5.9-p229), codename: Llamas in Pajamas web_1 | * Min threads: 5, max threads: 5 web_1 | * Environment: development web_1 | * Listening on tcp://0.0.0.0:3000 web_1 | Use Ctrl-C to stop と出てきました。動いているのかと思うのですが、IPアドレスを入れても、 「このサイトにアクセスできません。」 と出てきてしまいます。
mather

2021/08/28 16:06

nginx の設定に問題がありそうですね。 proxy_pass などは設定してありますか?
n-s0120

2021/08/30 02:58

はい、proxy_passは設定されておりました。
n-s0120

2021/08/30 04:02 編集

docker-compose run web rails assets:precompile RAILS_ENV=production を叩いた後にデータベースが存在しているエラーを見逃しておりました。 データベース削除後に、上記のコマンドを打ち込んだところ、 web_1 | => Booting Puma web_1 | => Rails 5.2.5 application starting in development web_1 | => Run `rails server -h` for more startup options web_1 | Puma starting in single mode... web_1 | * Version 3.12.6 (ruby 2.5.9-p229), codename: Llamas in Pajamas web_1 | * Min threads: 5, max threads: 5 web_1 | * Environment: development web_1 | * Listening on tcp://0.0.0.0:3000 web_1 | Use Ctrl-C to stop web_1 | - Gracefully stopping, waiting for requests to finish web_1 | === puma shutdown: 2021-08-27 06:23:02 +0000 === web_1 | - Goodbye! web_1 | Exiting web_1 | => Booting Puma web_1 | => Rails 5.2.5 application starting in development web_1 | => Run `rails server -h` for more startup options web_1 | Puma starting in single mode... web_1 | * Version 3.12.6 (ruby 2.5.9-p229), codename: Llamas in Pajamas web_1 | * Min threads: 5, max threads: 5 web_1 | * Environment: development web_1 | * Listening on tcp://0.0.0.0:3000 web_1 | Use Ctrl-C to stop web_1 | - Gracefully stopping, waiting for requests to finish web_1 | === puma shutdown: 2021-08-30 02:55:37 +0000 === web_1 | - Goodbye! web_1 | Exiting web_1 | => Booting Puma web_1 | => Rails 5.2.5 application starting in development web_1 | => Run `rails server -h` for more startup options web_1 | Puma starting in single mode... web_1 | * Version 3.12.6 (ruby 2.5.9-p229), codename: Llamas in Pajamas web_1 | * Min threads: 5, max threads: 5 web_1 | * Environment: development web_1 | * Listening on tcp://0.0.0.0:3000 web_1 | Use Ctrl-C to stop と表示され、以前のログから少々変化し、IPアドレスにアクセスしたところ、ページは表示されました。 こちらで、dockerは導入できているのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問