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

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

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Ruby on Rails

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

Docker

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

Q&A

解決済

2回答

3657閲覧

Dockerについて複数のイメージのリンク

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2016/05/02 17:49

Docker を用いてRails,MongoDB,Mysqlが必要なサービスの快適な環境を複数のサーバに構築したいです.
以前それぞれのイメージを作り, Docker-composeで一つにすればいいのではないかとお聞きしましたが実際にやってみるとよくわからないことが多数です.
Mongo on Docker
Rails + Mysql on Docker

これらのサイトを用いてイメージは複数ダウンロードしました.
その後docker-composeを使うために

YML

1# mysql 2mysql: 3 image: mysql 4 volumes_from: 5 - data-mysql 6 ports: 7 - "3306:3306" 8 environment: 9 MYSQL_ROOT_PASSWORD: password 10 11#mongodb 12mongo: 13 image: mongo 14 ports: 15 - "27017:27017" 16 17web: 18 image: takashioshikawa/ruby-native-2.2.4 19 command: bundle exec rails s -p 3000 -b '0.0.0.0' 20 ports: 21 - "3000:3000" 22 links: 23 - mysql, mongo 24

のような記述をしてみましたがダメでした.
どなたかお力をお貸しください

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

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

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

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

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

guest

回答2

0

ベストアンサー

docker-composeのversion

docker-compose のversionは、どうでしょうか?
mac版のdokcer-toolsを利用していたところ、docker-composeのversionが1.6.0以上
ならないと、linksの機能が十分(version2)に動きませんでした。
うまくいったのは、現時点で以下のバージョンです。

bash

1$ docker-compose -v 2docker-compose version 1.7.0, build 0d7bf73

docker-compose.yml

docker-compose.ymlで、私がはまったのは、2つです。

1) versionの記述

下記のように先頭にバージョンを記述します。
また、web containerから以下のようにアクセスするためには、exposeも大事です。

bash

1mysql -h mysql -p 3306 -u ...

yml

1version: '2' 2services: 3 mysql: 4 image: mysql 5 ports: 6 - "3306:3306" 7 expose: 8 - "3306" 9 environment: 10 MYSQL_ROOT_PASSWORD: rootのパスワード

2) linksの記述

linksの記述は、1行1個にして、alias名をきちんと書きましょう。
そうしないと、mysql_xxxx みたいな、他のcontainerとぶつからないホスト名で
web containerの/etc/hostsに記述されてしまいます。

web: image: takashioshikawa/ruby-native-2.2.4 command: bundle exec rails s -p 3000 -b '0.0.0.0' ports: - "3000:3000" links: - mysql:mysql - mongo:mongo

投稿2016/05/05 12:48

kurosuke

総合スコア80

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

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

0

docker composeを使ってコンテナを管理する前に それぞれのコンテナとdockerホストとの関係を理解するため直接コンテナを立ち上げて、目的の環境を作ってみることをオススメします。

docker images(サーバ)を、それぞれ立ち上げるように見えますが、dockerコンテナ内のミドルウェア(mysql等)をdockerホスト(dockerコマンドを叩くコンテナを立ち上げる側)で直接実行しているというイメージを持った方が良いです。dockerホストから topコマンド等でプロセスを見ると、mysql等それぞれのコンテナのミドルウェアのプロセスを直接確認できます。

1コンテナ1ミドルウェアのイメージでコンテナを立ち上げてみてください。

[docker ホスト](想定している環境をvagrant等で構築 - docker コマンドを叩く側のOS)

  • mysql コンテナ (以下、コンテナはlinuxディストリビューションの種類を問いません)

  • mongodb コンテナ

  • web-rail コンテナ

  • web-storage コンテナ (dockerホスト側と共有ディレクトリを作っておくと後で便利です)

webコンテナからそれぞれのコンテナにlinkをはってやることで web-rail コンテナからmysql, mongodbのコンテナに通信できます。

bash

1#事前に、mysql,mongodb,web-storageそれぞれのコンテナを run しておく 2# <version>部分は別途指定する 3sudo docker run --privileged --name web-rails --link mongodb:27017 --link mysql:3306 --volumes-from web-storage:rw -d -p 3000:3000 docker.io/rails:<version> /sbin/init 4 5# railsを実行するコンテナにexec で接続 6sudo docker exec -it web-rails /bin/bash

上記の方法で、想定した環境内で rails, mongodb, mysqlを動かすのと同等のことが実現できます。
見た目、複数のサーバにそれぞれ環境を構築したように見えますが、厳密には違っている点は注意です。

投稿2016/05/03 02:46

bleurouge

総合スコア161

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問