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

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

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

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Docker

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

Q&A

解決済

3回答

2520閲覧

【Docker】Rails+MySQL+nginxで仮想環境構築【続】

ta539tg70

総合スコア20

docker-compose

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Docker

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

0グッド

0クリップ

投稿2018/09/10 06:37

編集2018/09/11 03:16

Railsも環境構築も初心者ですが、Docker for Macを使用してRails+MySQL+nginxの構成で仮想環境を構築しようとしています。
先日こちらのスレで質問させていただいた者です。←この問題はお陰様で解決したのですが、また新たなエラーに直面してしまいました。

https://qiita.com/zwirky/items/88a6c5dd16d0f9e9fea5
上記ページの手順に従い、コードをほぼコピペでターミナルに打ち込んでいったところ、ステップ8の「起動を確認」で詰まってしまいました。

具体的には、文中にあるコマンドdocker-compose run web rails new . --force --database=mysql --skip-bundleを実行すると、途中で「ERROR: Service 'db' failed to build: ADD failed: stat /var/lib/docker/tmp/docker-builder475566792/mysql/my.cnf: no such file or directory」というエラーが出てストップしてしまいます。
よく読んでみると「mysql/my.cnfなんてファイルはないよ!」と怒られているように思うのですが、ステップ5の「MySQLコンテナの設定」で作成したmy.cnfがちゃんと存在しています。どうしたらちゃんと見つけてもらえるのでしょうか...。

参考ページ内のコードを変更した箇所は下記の通りです。

  1. 作業用ディレクトリは「work_dir」ではなく「my_app」に
  2. ダウンロードしたイメージのバージョン

ruby: 2.5.1
nginx: 1.15.3
mysql: 5.7.23
0. #2に伴いそれぞれのDockerfile内に記述するバージョン
0. ステップ4の「Ruby(Railsを利用するための)コンテナの設定」で作成するGemfile内に記述するRailsのバージョン(5.1.0ではなく5.2.1に)

書いてあるコマンドの意味はほとんど分かっておらず、そのためほぼコピペで使用している次第ですが、どなたか解決策をご教示いただけますと幸いです。よろしくお願い致します。

#追記@2018.09.11
試行錯誤を繰り返しながらdocker-compose.ymlのdb欄を下記のように書き換えてdocker-compose runを試したところ、ちょっとした進捗=新しいエラーが出ましたので追記させていただきます。

★書き換え後
db:
build:
context: ./containers/mysql
(dockerfile項目は削除)

★表示される新しいエラー
Starting my_app_datastore_1 ... error

ERROR: for my_app_datastore_1 Cannot start service datastore: b'Mounts denied: \r\nThe path /etc/localtime\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'

ERROR: for datastore Cannot start service datastore: b'Mounts denied: \r\nThe path /etc/localtime\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'
ERROR: Encountered errors while bringing up the project.

当初の「my.cnfが見つからない」エラーはひとまず抜けて、docker imagesをするとmy_app_dbというのが一覧に表示されるようにはなっています。

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

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

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

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

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

guest

回答3

0

自己解決

docker-compose.yml中の「- /etc/localtime:/etc/localtime:ro」を削除した上でdocker-composeを実行することで先に進みました。

ご協力くださった回答者の方々、ありがとうございました。

投稿2018/09/11 03:44

編集2018/09/11 03:52
ta539tg70

総合スコア20

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

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

0

Dockerfileとmy.cnfはもしかすると同じmysqlディレクトリの中にありますか?
その場合は、Dockerfile内のADD mysql/my.cnf /etc/my.cnfを、ADD my.cnf /etc/my.cnfに変えてみてください。

また、こういった質問のときは、作業環境のディレクトリ構成や、Dockerfile, Docker-compose.ymlの内容などを載せるとよいと思います。

投稿2018/09/10 06:57

Udomomo

総合スコア1524

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

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

ta539tg70

2018/09/10 07:30 編集

記事と同じことをやっていて、フォルダ階層やファイル内容もほぼ同じなので省いてしまいました。失礼致しました。 ★ディレクトリ構成 my_app ├── Gemfile ├── Gemfile.lock ├── containers │ ├── mysql │ │ ├── Dockerfile │ │ ├── my.cnf │ │ └── password.yml │ ├── nginx │ │ ├── Dockerfile │ │ ├── default.conf │ │ └── nginx.conf │ └── ruby │ └── Dockerfile └── docker-compose.yml ★docker-compose.yml version: '2' services: datastore: image: busybox volumes: - /share - ./containers/mysql/volumes:/var/lib/mysql - /etc/localtime:/etc/localtime:ro server: build: context: . dockerfile: ./containers/nginx/Dockerfile ports: - '80:80' volumes_from: - datastore depends_on: - datastore web: build: context: . dockerfile: ./containers/ruby/Dockerfile command: bundle exec rails s -p 3000 -b '0.0.0.0' ports: - '3000:3000' volumes: - .:/app - /etc/localtime:/etc/localtime:ro volumes_from: - datastore depends_on: - db links: - db - db:database - db:mysql extends: file: ./containers/mysql/password.yml service: password db: build: context: . dockerfile: ./containers/mysql/Dockerfile ports: - '3306:3306' volumes_from: - datastore depends_on: - datastore extends: file: ./containers/mysql/password.yml service: password おっしゃる通りmy.cnfとMySQL用のDockerfileは同じmysqlディレクトリ内にあります。 ご教示いただいたようにADD文中の「mysql/」を消してみても、「Service 'db' failed to build: ADD failed: stat /var/lib/docker/tmp/docker-builder052980080/my.cnf: no such file or directory」とのエラーが返ってきてしまいます。mysqlフォルダを一度削除して、mysqlフォルダ内のファイルを全て作り直して試してもみましたがエラーに変わりはありませんでした...。
guest

0

記事見ましたが、

ADD mysql/my.cnf /etc/my.cnf

ではなく

ADD my.cnf /etc/my.cnf

ではないでしょうか?

投稿2018/09/10 06:54

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ta539tg70

2018/09/10 07:24

「mysql/」を消してみても、「Service 'db' failed to build: ADD failed: stat /var/lib/docker/tmp/docker-builder052980080/my.cnf: no such file or directory」とのエラーが返ってきてしまいました。mysqlフォルダを一度削除して、mysqlフォルダ内のファイルを全て作り直して試してもみましたがエラーに変わりはありませんでした...。
退会済みユーザー

退会済みユーザー

2018/09/10 07:40

まず単体でビルドして検証した方が良いです。 cd ~/my_app/containers/mysql docker build ../mysql とすると同じエラーが出ますか?
ta539tg70

2018/09/10 07:46

「ADD my.cnf /etc/my.cnf」に変更した上でご教示いただいたコマンドを実行するとエラーは出ませんでした!(「Successfully built」と出る) でも「docker-compose run web rails new . --force --database=mysql --skip-bundle」では相変わらずエラーで止まってしまいます。
退会済みユーザー

退会済みユーザー

2018/09/10 08:01

一応docker-compose buildを試して下さい。
ta539tg70

2018/09/10 08:12 編集

相変わらずエラーが出てしまいましたが、内容が変わりました...。「ERROR: Service 'server' failed to build: ADD failed: stat /var/lib/docker/tmp/docker-builder232617691/nginx.conf: no such file or directory」で、今度はnginx.confがないと怒られているようです(T_T)
退会済みユーザー

退会済みユーザー

2018/09/10 10:59

ファイルを見に行ってる場所がおかしいんですよね。 さっきの要領でnginxイメージの単体ビルドならできるんじゃないでしょうか? それにしても全然一時間でできないですね。
退会済みユーザー

退会済みユーザー

2018/09/10 11:44

docker-composeを下のように書き換えて試して下さい。 # nginx build:  context: ./containers/nginx # mysql build: context: ./containers/mysql/Dockerfile dockerfile項目は消して下さい。
ta539tg70

2018/09/10 13:37

まずdocker-compose.ymlを下記の通り書き換えました。(大前提として、この書き換え方で合っておりますでしょうか?) version: '2' services: datastore: image: busybox volumes: - /share - ./containers/mysql/volumes:/var/lib/mysql - /etc/localtime:/etc/localtime:ro server: build: context: ./containers/nginx ports: - '80:80' volumes_from: - datastore depends_on: - datastore web: build: context: . dockerfile: ./containers/ruby/Dockerfile command: bundle exec rails s -p 3000 -b '0.0.0.0' ports: - '3000:3000' volumes: - .:/app - /etc/localtime:/etc/localtime:ro volumes_from: - datastore depends_on: - db links: - db - db:database - db:mysql extends: file: ./containers/mysql/password.yml service: password db: build: context: ./containers/mysql/Dockerfile ports: - '3306:3306' volumes_from: - datastore depends_on: - datastore extends: file: ./containers/mysql/password.yml service: password この上でdocker-compose run web rails new . --force --database=mysql --skip-bundleを実行すると下記のエラーが出ました。コピペしますのでご参照ください。 $ docker-compose run web rails new . --force --database=mysql --skip-bundle Building db Traceback (most recent call last): File "docker-compose", line 6, in <module> File "compose/cli/main.py", line 71, in main File "compose/cli/main.py", line 127, in perform_command File "compose/cli/main.py", line 282, in build File "compose/project.py", line 378, in build File "compose/service.py", line 1067, in build File "site-packages/docker/api/build.py", line 142, in build TypeError: You must specify a directory to build in path [1641] Failed to execute script docker-compose 私も色々調べてみたところコンテキストというのが悪さをしているような気がしてきてはいるのですが...どう直したらいいのかまでは答えが出ず...。解決しなさすぎて段々心が痛くなってまいりました。全然1時間でできません。懲りずにもう少々お付き合いいただけましたら幸いです...。申し訳ありません。
退会済みユーザー

退会済みユーザー

2018/09/10 14:17

環境構築にハマって時間を溶かすことはよくあることなので気にしないで良いですよ。何か分かったらまた書きます。
ta539tg70

2018/09/11 03:17

ありがとうございます。 ちょっとした進捗がありましたので質問文に追記をさせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問