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

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

新規登録して質問してみよう
ただいま回答率
85.31%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Docker

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

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

Q&A

解決済

1回答

2257閲覧

dockerでバックエンド側とフロントエンド側に分けて開発する際のディレクトリ構造について

senseIY

総合スコア281

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Docker

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

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

0グッド

0クリップ

投稿2022/08/16 05:00

編集2022/08/16 05:46

前提

dockerを利用してバックエンド側とフロントエンド側に分けて開発を行っています。しかし、あるエラーがどうしても解決できないので、そもそも自分のディレクトリ構造が間違っているのではないかと気になったので質問させていただきます。何かしら問題があればご指摘をお願いいたします。

詳細

環境構築の際に参考にしたサイト

私はこのサイトのとおりに環境構築を行いました。しかし、何かしらフロントエンド側で操作(yarn add など)をすると勝手にnode_moduleが作成されてしまい、以下の状態になってしまいます。(エラーがありますがいろいろいじりすぎたせいなので気にしないでください)

自分のディレクトリ構造

イメージ説明

自分の考察

この情報を見るまでは仕様だと思っていたので、特にディレクトリ構造は気にしていませんでしたが、よくよく考えてみると、このディレクトリ構造を使用している際に奇妙な現象が起きてしまいます。例を挙げると、
1 frontend/app/package.json と frontend/package.jsonとで中身が違い、typescriptのバージョンも異なっている。yarn addで更新されるのは、frontend/package.json側だけでapp/の方のpackage.jsonはなぜか更新できない。
2 なぜかnode_moduleが2つ出来ている。
初期値(このサイトの通りにやった状態)から何かしらフロントエンド側でコマンドを実行すると、front/node_modulesが勝手に生成される。
など
・フロントエンド側の操作について
私はいつもdocker-compose コマンドをルートディレクトリで行っています。(写真で一番親のディレクトリ)Dockercompose を使う際に、毎回コンテナの中に入らずに、ルートディレクトリでdocker-comopse exec front yarn add 000のようにコマンドを打っています。また、コマンドを打つ際にはルートディレクトリではなく、/front/appでコマンドを打つ必要があるのでしょうか(バックエンドならバックエンド側)?どちらのディレクトリでコマンドを入力しても変わらないと思っていますが、この認識は間違えていますでしょうか?
・初心者なので、おかしな質問をしているかもしれませんが、何かしらアドバイスがあればよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

参考にしているソースが間違っているかもしれませんね。
現状の設定に対してキャプチャの様なディレクトリ構造になるのは問題ないと思います。

多分ですけど、docker-compose.ymlのfront > volumesの値が- ./frontend:/usr/src/appではなく- ./frontend/app:/usr/src/appでないとうまくいかない気がします。
ただ、これをしたらこれをしたで別の問題が出るかもしれません(何か問題があったから後から- ./frontend:/usr/src/appにしたのかもしれません)
個人の備忘録として書いているようなのであくまでも参考程度にしたほうが良いかと思います。

ちなみにここに質問するよりも参考に下記事に対してコメントしたほうが親身なヒトであれば色々回答してくれるかもしれません。

投稿2022/08/16 05:59

YuuT

総合スコア673

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

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

YuuT

2022/08/16 06:26 編集

ちなみにただ- ./frontend/app:/usr/src/appに直しただけでは動かなかったので、front > commandのsh -c "cd app && yarn && yarn start"をsh -c "yarn && yarn start"に変更した所動きました。(app配下をマウントした為appに移動する必要がなくなった) 一応これだとnode_moduleが./frontend/app配下にのみ生成されると思います。 ただ、backendの方は色々かみ合っていなくて、Dockerfile内でruby3.0を指定しているのですが、最新のものはruby3.0.4をインストールします。 これがbackendディレクトリ内のruby-versionやGemfileのバージョンとかみ合っておらず、ruby3.0.3になっており、この差分で多分エラーが出ます。(出たと思います。) もうここまで来たら自分で作ったほうが速そうな気もしますが、(apiのportが3001から3000に変換されてfrontのportが4000から3000に変更されている意図も個人的に不明。悪い手ですが、このまま本番でも動かすのであればfrontは80:3000、apiは3000:3000でいける気がする。せめてfront 4000:3000, api 3000:3000でいいのでは?)ベースとして使用したいのであれば本人に確認するか、私の方法または他の回答者からの回答を参考にしたほうが良いと思います。
senseIY

2022/08/16 07:25 編集

![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-08-16/3098502c-7f50-412f-8c18-0beff4773774.png) 回答して頂きありがとうございます。頂きましたアドバイスの通りにコマンドを入力したところ、写真のように上手くディレクトリが構成されました。 追加の修正としましては、 変更前 $ docker-compose run --rm front sh -c "yarn create react-app app --template typescript" 変更後 $ docker-compose run --rm front sh -c "yarn create react-app . --template typescript" *変更前だと、frontend/app/appというディレクトリ構造になってしまい、上手くdocker-compose up できないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問