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

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

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

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

MySQL

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

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Docker

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

Q&A

解決済

1回答

1314閲覧

Dockerのエラーに関する質問

jones

総合スコア36

docker-compose

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

MySQL

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

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Docker

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

0グッド

0クリップ

投稿2020/12/12 08:33

編集2020/12/13 03:24

Dockerの勉強をしようと思いrailsを使ってdockerの環境を構築しようとして挙動の確認をしようとしていましたが、エラーが出たためてこずっています。

参考した記事
https://qiita.com/Nishi53454367/items/aee4cf0c346bc115be99#comments

前提・実現したいこと

エラーの解消

発生している問題・エラーメッセージ

Starting docker_sample_db_1 ... error ERROR: for docker_sample_db_1 Cannot start service db: Mounts denied: approving /Users/aaa/docker_sample/tmp/db: file does not exist ERROR: for db Cannot start service db: Mounts denied: approving /Users/aaa/docker_sample/tmp/db: file does not exist ERROR: Encountered errors while bringing up the project.

該当のソースコード

ソースコードをディレクトリ図を記載します。

directory

1docker_sample 2├ mysql-confd 3│ └default_authentication.yml 4├ src 5│ ├ Gemfile 6│ └ Gemfile.lock 78├ docker-compose.yml 9└ Dockerfile

Gemfile

1Gemfile 2# frozen_string_literal: true 3 4source "https://rubygems.org" 5 6git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } 7 8gem 'rails'

Gemfilelock

1#記述なし

dockercompose

1# docker-compose.ymlフォーマットのバージョン指定 2version: '3' 3services: 4 # Railsコンテナ定義 5 web: 6 # Dockerfileを使用してイメージをビルド 7 build: . 8 # コンテナ起動時のデフォルトコマンド 9 # ポート番号:3000 10 # バインドするIPアドレス:0.0.0.0 11 # ポート3000が来たらrailsサーバーが応答 12 command: bundle exec rails s -p 3000 -b '0.0.0.0' 13 # ローカルのsrcをコンテナにマウント 14 volumes: 15 - ./src:/app 16 # コンテナの外部に3000番を公開 17 # 公開するポート番号:コンテナ内部の転送先ポート番号 18 ports: 19 - 3000:3000 20 # dbコンテナが先に起動するよう設定 21 depends_on: 22 - db 23 # pryを使用してデバッグができるよう設定 24 tty: true 25 stdin_open: true 26 # MySQLコンテナ定義 27 db: 28 # mysqlを使用してコンテナ作成 29 image: mysql:5.7 30 volumes: 31 # Mysql8.0のデフォルトの認証形式をmysql_native_passwordに設定 32 - ./mysql-confd:/etc/mysql/conf.d 33 # ローカルで保持しているDBをコンテナにマウント 34 - db-volume:/var/lib/mysql 35 # コンテナ内の環境変数を定義 36 environment: 37 # mysqlのルートユーザーのパスワード設定 38 MYSQL_ROOT_PASSWORD: password 39# DBの内容をローカルに保持 40volumes: 41 db-volume:

Dockerfile

1# Railsコンテナ用Dockerfile 2 3# イメージのベースラインにRuby2.5.1を指定 4FROM ruby:2.6.5 5# Railsに必要なパッケージをインストール 6RUN apt-get update -qq && apt-get install -y build-essential nodejs 7# ルートディレクトリを作成 8RUN mkdir /app 9# 作業ディレクトリを指定 10WORKDIR /app 11# ローカルのGemfileとGemfile.lockをコピー 12COPY src/Gemfile /app/Gemfile 13COPY src/Gemfile.lock /app/Gemfile.lock 14# Gemのインストール実行 15RUN bundle install 16# ローカルのsrcをコピー 17COPY src /app

試したこと(立てた仮説)

このエラーに"db: file does not exist"とあるので
ああ、ファイルがないんだなあということなのでしょうが、どういったファイルを作成する必要があるのかなと思っています。しかし私はどこを参照して良いのかがわからないという状況です。

またdocker-compose.ymlのmysqlのバージョンを変えるというあまり生産性のないことをしていました。

他にもやってみたこと(編集依頼より)

docker-compose down --rmi all --volumes --remove-orphans

これでimageも含めてコンテナを全て削除し初めからやり直してみました。
結果は変わらなかったです…

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

ruby 2.6.5
docker 20.10.0
docker-compose 1.27.4

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

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

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

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

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

bsdfan

2020/12/12 12:53

一度、docker-compose downしてからやり直したらどうでしょうか。 編集前のdocker-compose.ymlの設定がコンテナに残っているようにも見えます。
guest

回答1

0

自己解決

docker desktopの設定を変更したところrailsが作れました。

参考記事Docker Desktop Mac 3.0.0 にアップデートしたら、起動しなくなった時の対応

docker-composeに

version: '3'

とあったので、「あれ?もしかするとこの記事に該当するのでは?」となりました。
この記事の通りに見様見真似で設定し直したところ一応railsで作成することができました。
しかしなぜこれでうまくいったのかという根本的な問題は解決できていません。
勉強を続けていかないといけないなと思いました。

投稿2020/12/13 03:08

jones

総合スコア36

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問