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

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

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

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

Yarn

Yarnは、Facebook/Exponent/Google/Tildeが開発したJavaScriptのパッケージマネージャ。npmよりもインストールが速く、厳密にモジュールのバージョンを固定できるなど、npmの問題を解決。npmと互換性があり、同じpackage.jsonを使用できます。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Docker

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

React.js

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

Q&A

解決済

1回答

4585閲覧

DockerでReactの環境構築でerror Couldn't find a package.json file in ”xxx”となってしまう

kiyoma

総合スコア1

docker-compose

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

Yarn

Yarnは、Facebook/Exponent/Google/Tildeが開発したJavaScriptのパッケージマネージャ。npmよりもインストールが速く、厳密にモジュールのバージョンを固定できるなど、npmの問題を解決。npmと互換性があり、同じpackage.jsonを使用できます。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Docker

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

React.js

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

0グッド

0クリップ

投稿2021/12/19 02:23

##実現したいこと
現在Docker-machineを使って、仮想環境のvirtualbox上に
React+Rails+MySqlの環境構築を行いたいと思ってます。

##解決したいこと
こちらの記事を参考に環境構築を行なっているのですが、
Docker-compose up 時にyarnのエラーになってしまいます

ssh

1 2$ docker-compose up 3省略 4yarn run v1.22.15 5error Couldn't find a package.json file in "/myapp" 6info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. 7

front側のコンテナだけうまくいかず、railsやMySQLのコンテナはきちんと動作しております。
frontのコンテナが動かないので、create-react-appもできない状態(行なっても、同じ様にpackege.jsonが見つからないと怒られる)

以下Dockerfileなどです

###構成

myapp |-api |-front docker-compose.yml
docker@try1:~/myapp$ ls api/ Dockerfile Rakefile config.ru log vendor Gemfile app db public Gemfile.lock bin entrypoint.sh storage README.md config lib tmp #rails.newをした後なので、Docker-file以外のディレクトリができています docker@try1:~/myapp$ ls front/ Dockerfile

front側のDockerfile

Dockerfile

1 2FROM node:17-alpine 3#ここは何度か別verを試したりしています。 4RUN mkdir /myapp 5WORKDIR /myapp

docker

1docker@try1:~/myapp$ cat docker-compose.yml 2version: '3' 3services: 4 db: 5 image: mysql:8.0 6 environment: 7 MYSQL_ROOT_PASSWORD: password 8 ports: 9 - '3306:3306' 10 command: --default-authentication-plugin=mysql_native_password 11 volumes: 12 - mysql-data:/var/lib/mysql 13 api: 14 build: ./api 15 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 16 volumes: 17 - ./api:/myapp 18 - gem_data:/usr/local/bundle 19 ports: 20 - "3000:3000" 21 depends_on: 22 - db 23 stdin_open: true 24 tty: true 25 front: 26 build: ./front 27 command: yarn start 28 ports: 29 - '8000:3000' 30 volumes: 31 - ./front:/myapp 32 depends_on: 33 - api 34 tty: true 35volumes: 36 mysql-data: 37 gem_data: 38 driver: local

##試したこと
1 yarnの公式を見て、
DockerfileにRUN yarn init -2RUN yarn installを記述したりしましたが、変わりませんでした。
(Dockerfileを記述後に、再度docker-compose buildでイメージの作り直しは当然行なっております。)

2 Dockerfileのnodeのverを変えることも実施

3 docker-composeを書き換え

コマンドを実行するディレクトリが悪いのかと思い、docker-composeのfrontサービスのコマンドを以下の様に書き換えても

ssh

1 command: sh -c "cd front && yarn start"

ssh

1ocker@try1:~/myapp$ docker-compose up 2省略 3front_1 | sh: cd: line 1: can't cd to front: No such file or directory 4db_1 | 2021-12-19T00:43:22.204506Z 0 [Warning] [MY-010918] [Server] 'default_authentication_plugin' is deprecated and will be removed in a future release. Please use authentication_policy instead. 5db_1 | 2021-12-19T00:43:22.204528Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.27) starting as process 1 6db_1 | 2021-12-19T00:43:22.244707Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 7myapp_front_1 exited with code 2 8 9cdのそんなディレクトリ見つからないよと怒られる

わかる方いらっしゃれば、お知恵をいただけるとありがたいです。
よろしくお願いします。

##環境

docker@try1:~/myapp$ docker --version Docker version 19.03.12, build 48a66213fe docker@try1:~/myapp$ docker-compose --version docker-compose version 1.16.1, build 6d1ac21

virtualboxの環境

イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

該当のサイトを見ましたが、おそらく./frontにpackage.jsonがないのだと思います。
試しに、frontのcommandbashに変えて

bash

1$ docker-compose up -d

を実行したあと、 

bash

1$ docker-compose exec front bash

を実行してみてください。そうするとコンテナの中に入ることができます。
そうしたら、lsコマンドを実行してみてください。多分package.jsonがないと思います。

そして、この状態のまま、下記コマンドを実行してみましょう

bash

1# npx create-react-app ./

これでreactのプロジェクトが作れると思います。lsコマンドでプロジェクトが作成できていることが確認できたらexitでコンテナから抜けてください。

コンテナから抜けると、先ほどcreate-react-appで作ったプロジェクトがfrontディレクトリにあると思います。
ここで、commandを元のyarn startに戻してもらって、再びdocker-compose up -d を実行すると多分Reactが起動できるのではないかと思います。

ちなみに上記の方法はかなり無骨に作業していますが、下記のコマンドだけで大丈夫だと思います。

bash

1$ docker-compose run --rm front npx create-react-app ./ # このコマンドで、コンテナ内でCRAのコマンドが実行できます。 2$ docker-compose up -d # 上のコマンドでプロジェクトが作られるので、そのままdocker-compose up -dで起動しましょう

※補足
もしかすると、Dockerfileがあるせいでcreate-react-appが実行できないかもしれないです。
もしそうなったらdocker-compose.ymlのvolumeフィールドを変更するなどしてコンテナにマウントしている
ディレクトリに何もファイルがない状態にしてから試してみてください。

投稿2021/12/19 15:56

ukyoda

総合スコア386

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

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

kiyoma

2021/12/21 01:00

回答ありがとうございます。 コンテナに接続した上で、ご指摘いただいたコマンドは既に実行はしていて、 create-react-appは実行済みだったのですが、エラーになっていました。 色々いじっているうちに、ヒープエラーと出てきて、virtualboxのメモリを1024MBから2048MBに変えたところ、実行できました。 ありがとうございます!!
ukyoda

2021/12/23 14:25

ああ、なるほど!VMのメモリの問題だったんですね???? 解決して良かったです????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問