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 7│ 8├ 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
回答1件
あなたの回答
tips
プレビュー