Estoy tratando de crear una configuración de docker-compose con nginzx, matraz y reaccionar. Comencé mi aplicación de reacción con react-create-app ( https://github.com/facebook/create-react-app ) y todavía no he cambiado nada.
Mi Dockerfile para la aplicación de reacción es:
FROM node:10 WORKDIR /usr/src/app # Install app dependencies # A wildcard is used to ensure both package.json AND package-lock.json are copied COPY package*.json ./ RUN npm install --verbose # Bundle app source COPY . . EXPOSE 3000 CMD ["npm", "start"]El guión de redacción es:
version: '3.1' services: nginx: image: nginx:1.15 container_name: nginx volumes: - ../:/var/www - ./nginx-dev.conf:/etc/nginx/conf.d/default.conf ports: - 80:80 networks: - my-network depends_on: - flask - react react: build: context: ../react-app/ dockerfile: ./Dockerfile container_name: react volumes: - ../react-app:/usr/src/app networks: my-network: aliases: - react-app expose: - 3000 ports: - "3000:3000" flask: ... networks: my-network:Los contenedores de matraz y nginx comienzan bien, la salida para reaccionar es:
react | react | > react-app@0.1.0 start /usr/src/app react | > react-scripts start react | react | ℹ 「wds」: Project is running at http://my-ip-address/ react | ℹ 「wds」: webpack output is served from react | ℹ 「wds」: Content not from webpack is served from /usr/src/app/public react | ℹ 「wds」: 404s will fallback to / react | Starting the development server... react | react | react | npm verb lifecycle react-app@0.1.0~start: unsafe-perm in lifecycle true react | npm verb lifecycle react-app@0.1.0~start: PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/usr/src/app/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin react | npm verb lifecycle react-app@0.1.0~start: CWD: /usr/src/app react | npm info lifecycle react-app@0.1.0~poststart: react-app@0.1.0 react | npm verb exit [ 0, true ] react | npm timing npm Completed in 1727ms react | npm info ok react exited with code 0Agregar: stdin_open: true al componente React de mi archivo docker-compose solucionó mi problema.
Ejemplo:
version: '3.1' services: react: build: context: ../react-app/ dockerfile: ./Dockerfile container_name: react volumes: - ../react-app:/usr/src/app networks: my-network: aliases: - react-app expose: - 3000 ports: - "3000:3000" stdin_open: trueMe encontré con el mismo problema. Los pasos mencionados a continuación resolvieron mi problema: 1. agregue stdin_open: true
version: '3.1' services: nginx: . . react: stdin_open: true . .2. No olvide volver a construir el contenedor después de realizar el cambio mencionado anteriormente.
docker-compose down docker-compose up --buildComo el problema es con la versión de react-scripts> 3.4.0 como con el enlace publicado de sandeep-reddy, puede anclar la versión que está instalada usando estas líneas en el Dockerfile (crédito de Michael Herman).
Editar: parece que todavía necesita la línea stdin_open:true en el archivo docker-compose.yml para que funcione.
RUN npm ci RUN npm install react-scripts@3.4.0 -g --silent