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?
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
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
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é.