web-dev-qa-db-fra.com

Impossible de trouver un fichier requis. Nom: index.html en réaction avec docker compose

J'ai installé mon application react avec create-react-app et j'essayais de l'exécuter avec Docker container et Docker compose. Cependant, j'ai eu l'erreur suivante lorsque je l'ai exécutée avec 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

J'utilise Windows 10 et le terminal de démarrage rapide Docker

Voici ma structure de dossiers:

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

Voici le contenu de 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

Voici le 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

J'ai également essayé d'explorer le système de fichiers dans Docker et j'ai obtenu le résultat suivant:

$ 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

Celui-ci signifie essentiellement que le index.html le fichier est là, donc je suis devenu plus confus au sujet du message d'erreur.

Quelqu'un a-t-il une solution à cela?

8
Eric

Je n'ai pas de fichier de composition Docker, mais j'ai pu obtenir une application React similaire à exécuter avec la commande Docker

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

J'ai ensuite pu accéder à mon application React à partir de localhost:3000

1
rmaguiar

J'ai eu ce même problème lors du travail de déploiement d'un React App uisng Docker sur un serveur Ubuntu 18.04.

Le problème est que j'ai raté l'étape de copie du contenu de la build précédente dans le répertoire de travail (/app) de l'application.

Voici comment je l'ai résol:

Ajoutez ceci ci-dessous comme une étape après le npm i react et avant le npm run build pas:

COPY . /app

Mon Dockerfile entier ressemble à ceci:

# 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

C'est tout.

j'espère que cela aide

0
Promise Preston

J'ai fait une COPIE explicite ./public/index.html et ce problème a disparu mais une erreur similaire a été générée pour index.js et index.css. Faire de même pour ceux-ci l'a corrigé.

0
Dong Pak