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

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

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

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

Ruby on Rails

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

Docker

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

Q&A

解決済

1回答

276閲覧

docker上でのmysqlとrailsの環境構築について

fork_

総合スコア43

docker-compose

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

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2020/02/16 04:46

丁寧すぎるDocker-composeによるrails5 + MySQL on Dockerの環境構築(Docker for Mac)の記事を参考に、docker上にrailsとMysqlの構築を終了するところまで行きました。
dockerの本をみていると、docker-compose down コマンドで、docker-compose upコマンドによって立ち上げたコンテナやイメージファイルを削除する、と書いているのですが、docker-compose downコマンドを打つまでに生成したコントローラやモデルなどは削除されてしまうのでしょうか?
削除されてしまう場合、状態を保存しておく方法などはあるのでしょうか??
また、個人開発の範囲内で、どのようにdocker上でrailsの開発を進めていくのがベストなのでしょうか??
質問多くて申し訳ありません。一通り本は読んだのですが、理解がまだまだ浅く....。ご教示のほどよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

すでに解決されているかもしれませんが、2点質問があると思うので順番に回答します。

downするとコントローラやモデルのコードが消えるかどうか

質問文のリンク先にあった、以下のdocker-compose.ymlの設定がされているものと仮定します。

yml

1version: '3' 2services: 3 db: 4 image: mysql:5.7 5 volumes: 6 - ./src/db/mysql_data:/var/lib/mysql 7 environment: 8 MYSQL_ROOT_PASSWORD: root 9 MYSQL_DATABASE: root 10 ports: 11 - "3306:3306" 12 13 web: 14 build: . 15 command: rails s -p 3000 -b '0.0.0.0' 16 volumes: 17 - ./src:/app_name 18 ports: 19 - "3000:3000" 20 links: 21 - db

この場合、webがRailsコンテナだと思うのですが、volumesオプションでホストマシンの./srcディレクトリをコンテナの/app_nameにマウントしています。
この設定をしている場合は、docker-compose downをしても、./srcディレクトリの内容はホストマシンに残るので消えることはありません。
Railsのコントローラーやモデルのコードがこのディレクトリに入っているのであれば、コンテナを落としても消えることはないです。
逆に言うと、コンテナの/app_nameディレクトリ以外のファイルを編集(コンテナ内でvi[m]で編集するとか)した場合は、コンテナを落とすとその編集内容は消えてしまいます。
Docker、ボリューム(Volume)について真面目に調べた - Qiita

Docker上でRailsの開発を進め方

Dockerを導入しているのであれば、

  1. docker-compose upでコンテナを立ち上げる
  2. ホストマシン上でお好みのエディタでコードを編集・動作確認
  3. 開発が終わったらdocker-compose downでコンテナを落とす

という流れでいいかと思います。

投稿2020/02/19 00:35

shgtkshruch

総合スコア665

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

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

fork_

2020/02/19 06:38 編集

丁寧なご解説、ありがとうございます。 ということは、docker-compose.ymlファイルに書いている、dbの、 ```yml volumes: - ./src/db/mysql_data:/var/lib/mysql ``` で、dbの設定などは、コンテナの外(ホスト側の)var/lib/mysql にマウントしているのでdocker-compose downをしても、データベースは消えない、という理解でよろしいでしょうか??
shgtkshruch

2020/02/19 10:20

こちらの設定も先程の設定と同じです。 正しくはホスト側の`./src/db/mysql_data`にコンテナ側の`/var/lib/mysql`をマウントしています。 理解が曖昧な部分は(すでにご存知かもしれませんが)Docker Composeのドキュメントを確認されたほうがいいかと思います。 http://docs.docker.jp/compose/compose-file.html#volumes-volume-driver
fork_

2020/02/19 13:35

かしこまりました。 理解がとても深まりました。ありがとうございましたm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問