Creé una aplicación usando create-react-app y configuré docker compose para configurar el contenedor e iniciar la aplicación. Cuando la aplicación está en el directorio raíz, la aplicación se inicia y funciona la recarga en vivo. Pero cuando muevo la aplicación a un subdirectorio, puedo hacer que la aplicación se inicie, pero la recarga en vivo no funciona.
Aquí está la configuración de trabajo:
Dockerfile
FROM node:7.7.2 ADD . /code WORKDIR /code RUN npm install EXPOSE 3000 CMD npm startdocker-compose.yml
version: "2" services: client: build: . ports: - "3000:3000" volumes: - .:/codeEstructura de directorios
app - node_modules - docker-compose - Dockerfile - package.json - src - publicAquí está la estructura que me gustaría:
app - server - client / node_modules / Dockerfile / package.json / src / public - docker-compose.ymlHe probado todas las variaciones que se me ocurren, pero la recarga en vivo no funciona.
Lo primero que tuve que hacer fue cambiar la ubicación de compilación:
version: "2" services: client: build: ./client ports: - "3000:3000" volumes: - .:/code Luego recibí un error al intentar ejecutar docker-compose up :
npm ERR! enoent ENOENT: no such file or directory, open '/code/package.json' Así que cambié el volumen a - .:/client/code y reconstruí y ejecuté el comando y la aplicación comenzó, pero no se recargó en vivo.
De todos modos, ¿hacer esto cuando la aplicación está en un subdirectorio?
No hay diferencia en las rutas dentro del contenedor cuando mueve su directorio local. Entonces solo necesita cambiar las referencias locales.
El montaje del volumen debe provenir de ./client
version: "2" services: client: build: ./client ports: - "3000:3000" volumes: - ./client:/code