web-dev-qa-db-ja.com

必要なファイルが見つかりませんでした。名前:docker composeに反応するindex.html

Create-react-appを使用して反応アプリをセットアップし、DockerコンテナーとDocker composeで実行しようとしました。しかし、Docker composeで実行すると、次のエラーが発生しました。

web_1     | Could not find a required file.
web_1     |   Name: index.html
web_1     |   Searched in: /usr/src/app/web_client/public

Windows 10とDockerクイックスタートターミナルを使用しています

これが私のフォルダ構造です:

vocabulary-app
   |
    web_client
         |
          node_modules/
          public/
          src/
          package.json
          package-lock.json
          Dockerfile
          yarn.lock
    docker-compose.yml

docker-compose.ymlの内容は次のとおりです

  ### Client SERVER ###
  web:
    build: ./web_client
    environment:
      - REACT_APP_PORT=80
    expose:
      - 80
    ports:
      - "80:80"
    volumes:
      - ./web_client/src:/usr/src/app/web_client/src
      - ./web_client/public:/usr/src/app/web_client/public
    links:
      - server
    command: npm start

これがDockerfileです

FROM node:9.0.0

RUN mkdir -p /usr/src/app/web_client
WORKDIR /usr/src/app/web_client

COPY . .

RUN rm -Rf node_modules

RUN npm install

CMD npm start

私はまた、ドッカーでファイルシステムを探索してみましたが、次の結果が得られました。

$ docker run -t -i vocabularyapp_web /bin/bash
root@2c099746ebab:/usr/src/app/web_client# ls
Dockerfile  node_modules       package.json  src
README.md   package-lock.json  public        yarn.lock
root@2c099746ebab:/usr/src/app/web_client# cd public/
root@2c099746ebab:/usr/src/app/web_client/public# ls
favicon.ico  index.html  manifest.json

これは基本的にindex.htmlファイルが存在することを意味するため、エラーメッセージについてさらに混乱しました。

誰かがこれに対する解決策を持っていますか?

8
Eric

Docker-composeファイルはありませんが、dockerコマンドを使用して同様の反応アプリを実行することができました

docker run -v ${PWD}:/app -v /app/node_modules -p 3001:3000 --rm app-name:dev

その後、localhost:3000から自分の反応アプリにアクセスできました

1
rmaguiar

Ubuntu 18.04サーバーにReact App uisng Dockerをデプロイするときにも同じ問題が発生しました。

問題は、以前のビルド全体の内容をアプリケーションの作業ディレクトリ(/app)にコピーする手順を逃したことです。

解決方法は次のとおりです

これをnpm i reactの後、npm run buildのステップの前のステップとして追加します。

COPY . /app

私のDockerfile全体は次のようになります。

# base image
FROM node:Alpine

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /app/package.json
RUN npm install
RUN npm i react

COPY . /app

# start app
RUN npm run build

それでおしまい。

これが役に立てば幸いです

0
Promise Preston

明示的なCOPY ./public/index.htmlを実行したところ、この問題はなくなりましたが、index.jsとindex.cssで同様のエラーが発生しました。これらに対して同じことを行うことで修正されました。

0
Dong Pak