Я пытаюсь докеризовать стек MERN
, но когда наступает момент, когда нужно запустить реакцию, контейнер выходит со статусом 0. Это ошибка журнала:
Это структура моего проекта:
- project
- server
- api
api.yml
server.js
Dockerfile
- www
app.yml
Dockerfile
docker-compose.yml
Папка www
содержит стартовые файлы, которые будут сгенерированы из npx create-react-app www
. Содержимое server/Dockerfile
равно:
FROM node:latest
RUN mkdir -p /usr/server
WORKDIR /usr/server
RUN npm install -g nodemon
EXPOSE 3000
CMD [ "npm", "start" ]
содержимое www/Dockerfile
равно:
FROM node:latest
RUN mkdir -p /usr/www/src/app
WORKDIR /usr/www/src/app
EXPOSE 3000
CMD [ "npm", "start" ]
и, в конце концов, содержимое docker-compose.yml
равно:
version: '3.7'
services:
mongodb:
image: mongo
ports:
- 27017:27017
api:
build: ./server/
ports:
- "6200:6200"
volumes:
- ./server:/usr/server
depends_on:
- mongodb
www:
build: ./www/
ports:
- 3000:3000
volumes:
- ./www:/usr/www/src/app
depends_on:
- api
Теперь в названии я упоминаю Google Cloud
, потому что я пытался распространять различные части "server" и "www" в моей производственной среде. Распределение server
работает правильно, но www
завершается с ошибкой:
Ошибки, которые генерируются Docker
и Google Cloud
кажутся очень похожими или я не прав? Может ли это быть реакцией или я ошибаюсь в обоих случаях?
Я также оставляю содержимое файлов app.yaml
и api.yaml
. app.yaml
runtime: nodejs
env: flex
# Only for developing
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
handlers:
- url: /.*
static_files: build/index.html
upload: build/index.html
- url: /
static_dir: build
Содержимое файла api.yaml
такое же, как у app.yaml
, но без раздела handlers
.