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

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

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

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

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Docker

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

Q&A

0回答

940閲覧

dockerコンテナ内でbundle execが出来ません。。。

Daimian

総合スコア53

docker-compose

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

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Docker

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

0グッド

0クリップ

投稿2018/12/22 19:36

編集2022/01/12 10:55

前提・実現したいこと

dockerを活用してappコンテナとdbコンテナおよびredisコンテナを立ち上げています。内容は割と基本的なものです。

下記のようにdocker-composeファイルを作成し、docker-compose up -dコマンドを実施すると問題なくコンテナが立ち上がります。

しかし、hoge_webコンテナにdocker exec -it hoge_web bashで入り、コンテナ内でbundle exec rails cなどとbundle execコマンドを実行すると下記の「エラーメッセージ」に記載のメッセージが表示されます。

これは何故でしょうか。どう対処すればよいのでしょうか。どなたかヒントでも構いませんのでご教示頂けますと幸いです!!

エラーメッセージ

ruby

1There was an error accessing `/app/hoge_web/.bundle/config`. 2The underlying system error is Errno::EISDIR: Is a directory @ io_fread - /app/hoge_web/.bundle/config

該当のソースコード

./docker-compose.yml

ruby

1version: '3' 2 3services: 4 app: 5 build: 6 context: ./ 7 dockerfile: Dockerfile.app 8 tty: true 9 stdin_open: true 10 container_name: hoge_web 11 environment: 12 RAILS_ENV: development 13 BUNDLE_PATH: /app/hoge_web/vendor/bundle 14 BUNDLE_APP_CONFIG: /app/hoge_web/.bundle/config 15 REDIS_HOST: redis 16 volumes: 17 - ./hoge_web:/app/hoge_web:rw 18 - ./start_app.sh:/usr/local/bin/start_app.sh:ro 19 ports: 20 - 3000:3000 21 working_dir: /app/hoge_web 22 command: bash /usr/local/bin/start_app.sh 23 links: 24 - redis 25 26 db: 27 image: mariadb:latest 28 container_name: hoge_db 29 ports: 30 - 3306:3306 31 environment: 32 MYSQL_DATABASE: hoge_web_development 33 MYSQL_ROOT_USER: root 34 MYSQL_ROOT_PASSWORD: password 35 MYSQL_USER: hoge 36 MYSQL_PASSWORD: password 37 38 redis: 39 image: "redis:latest" 40 container_name: hoge_redis 41 ports: 42 - 6379:6379

./.binlde/config/config

ruby

1--- 2BUNDLE_PATH: "./vendor/bundle"

./Dockerfile

ruby

1FROM ruby:2.5.1 2RUN apt update 3RUN apt -y install nodejs 4RUN apt -y install vim 5RUN apt -y install mysql-client 6RUN gem install bundler

./start_app.sh

ruby

1#!/bin/sh 2 3BUNDLER_PATH=./vendor/bundle # docker-composeのworkdirから相対パス 4 5#pidファイルが残ったままの場合、削除する 6if [[ -f ./tmp/pids/server.pid ]] 7then 8 rm ./tmp/pids/server.pid 9fi 10 11bundle install --path=$BUNDLER_PATH 12bundle exec rails s -b 0.0.0.0 13

考えたこと・試したこと

Errno::EISDIR: Is a directoryというメッセージはコンパイルする時にdirectoryはダメなんだよという読み込みエラーだということだと考えましたので

BUNDLE_APP_CONFIG: /app/hoge_web/.bundle/config

ではなく、

BUNDLE_APP_CONFIG: /app/hoge_web/.bundle/config/config.app
などと謎にファイル指定っぽいことをしてみましたが、これはこれで"config.app"と名のついたディレクトリを生成することになってしまいました。

また、コンテナ内で which bundleとやると、/usr/local/bundle/bin/bundleと出力され、ちゃんとその中にはbundleとbundlerのディレクトリが入っています。。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問