🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

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

Docker

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

1254閲覧

途中まで作ったrailsアプリにDockerを導入したい(AWS)

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Docker

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/02/26 09:44

編集2021/02/27 01:46

前提・実現したいこと

初めまして。
現在railsでアプリケーションを作っています。
(開発環境はAWSのES2です。)
途中まで作っていたアプリにdockerを導入したくいくつかの記事を参考にしていましたが
エラーで行き詰まってしまい解決方法をご教授いただけたら助かります。

参考にした記事
https://qiita.com/majorboy/items/9fbfc78fc7bbc1f35e77

https://qiita.com/shinespark/items/a8019b7ca99e4a30d286

https://qiita.com/kenz-dev/items/b9e716204e0cd0cea447

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

db uses an image, skipping Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/ Building web unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/ec2-user/environment/portfolio_1/Dockerfile: no such file or directory ERROR: Service 'web' failed to build

docker-compose.yml

version: '3' services: db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: 'password' ports: - "4306:3306" web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/app_name ports: - "3000:3000" depends_on: - db

Dockerfile

FROM ruby:2.4.5 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs RUN mkdir /workdir WORKDIR /workdir ADD Gemfile /workdir/Gemfile ADD Gemfile.lock /workdir/Gemfile.lock RUN bundle install ADD . /workdir

配置先のディレクトリ構成

drwxrwxr-x 10 ec2-user ec2-user 4096 Dec 8 08:10 app drwxr-xr-x 2 ec2-user ec2-user 4096 Dec 8 08:10 bin drwxrwxr-x 5 ec2-user ec2-user 4096 Dec 8 08:10 config -rw-rw-r-- 1 ec2-user ec2-user 130 Dec 8 08:10 config.ru drwxrwxr-x 3 ec2-user ec2-user 4096 Jan 25 07:52 db -rw-r--r-- 1 ec2-user ec2-user 340 Feb 23 10:28 docker-compose.yml -rw-r--r-- 1 ec2-user ec2-user 231 Feb 23 10:26 Dockerfile-rails -rw-rw-r-- 1 ec2-user ec2-user 2240 Jan 23 08:57 Gemfile -rw-rw-r-- 1 ec2-user ec2-user 5765 Jan 23 08:58 Gemfile.lock drwxrwxr-x 4 ec2-user ec2-user 4096 Dec 8 08:10 lib drwxrwxr-x 2 ec2-user ec2-user 4096 Jan 2 08:50 log -rw-rw-r-- 1 ec2-user ec2-user 69 Dec 8 08:10 package.json drwxrwxr-x 2 ec2-user ec2-user 4096 Dec 8 08:10 public -rw-rw-r-- 1 ec2-user ec2-user 227 Dec 8 08:10 Rakefile -rw-rw-r-- 1 ec2-user ec2-user 374 Dec 8 08:10 README.md drwxrwxr-x 2 ec2-user ec2-user 4096 Dec 8 08:10 storage drwxrwxr-x 9 ec2-user ec2-user 4096 Dec 8 08:10 test drwxrwxr-x 6 ec2-user ec2-user 4096 Dec 9 05:40 tmp drwxrwxr-x 2 ec2-user ec2-user 4096 Dec 8 08:10 vendor

試したこと

qiita記事を参考にしDocker-for-macはインストールしていたのですが
docker-composeをビルドしようとするとコマンドがないとエラーになりました。
そのため、改めてdocker-composeのみインストールをしてみました。
すると上記のエラーメッセージに変わりました。
翻訳しましたがどこから手をつけていいかわからずこちらで質問させていただきました。

初心者で質問も拙い内容かと思いますがどうかよろしくお願いいたします。

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

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

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

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

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

yu_1985

2021/02/26 11:21

配置先のディレクトリ構成 docker-compose.ymlの内容 Dockerfileの内容 を全て追記してください。
退会済みユーザー

退会済みユーザー

2021/02/26 12:27

yu_1985様 ご指摘頂きありがとうございます! 不備があり申し訳ございませんでした。よろしくお願いいたします。
yu_1985

2021/02/26 14:41 編集

配置先のディレクトリ構成がないので追記してください。 docker-compose.ymlとDockerfileをどのディレクトリにどのように配置してますか? ls -l の結果を貼るとかでもいいです。
退会済みユーザー

退会済みユーザー

2021/02/27 01:48

yu_1985様 何度も申し訳ありません、、。拙い内容にも関わらずお付き合い頂き本当にありがとうございます。 ディレクトリ配置について追記いたしました。
guest

回答1

0

ベストアンサー

Dockerfileの名前を指定しないとDockerfileという名前のファイルをDockerfileとみなして探そうとします。
docker-compose.ymlのwebの設定でDockerfileのファイル名を指定していません。
buildの項目では.を指定していますが、これは相対パスで同じディレクトリを意味します。
つまり、webでは「docker-compose.ymlと同じディレクトリにあるDockerfile」を指定していることになります。
しかし、配置しているディレクトリにはDockerfileというファイル名のファイルがありません。

恐らくDockerfile-railsを使いたいんでしょうね。

なので下記のいずれかでとりあえず現在のエラーは解消すると思われます。

  • Dockerfile-railsのファイル名をDockerfileに修正する
  • docker-compose.ymlでdockerfileオプションを使ってDockerfile-railsを指定する

例えばこんな感じでしょうか。

yaml

1build: 2 context: . 3 dockerfile: Dockerfile-rails

build: .というのは古いバージョンでの書き方のようです。詳しくはドキュメントをご参照ください。

参考
Compose ファイル・リファレンス

もちろん、これを解消したあとに別のエラーに遭遇する可能性はありますが、それは恐らく別の要因である可能性が高いので必要に応じて調べるなり別の質問を立てるなりしてください。

投稿2021/02/27 14:09

yu_1985

総合スコア7588

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

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

退会済みユーザー

退会済みユーザー

2021/02/28 02:27

ご丁寧にありがとうございました。おっしゃる通り別のエラーが出てきましたので今一度勉強し直します、、!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問