【问题标题】:Docker MERN Deployment - hot reload is not workingDocker MERN 部署 - 热重载不起作用
【发布时间】:2021-06-13 01:34:44
【问题描述】:

我正在将我的存储库移动到具有单一服务的 docker 容器中,除了反应开发环境的热重载之外,一切似乎都按预期工作。也许有必要为客户开发服务使用卷?代码:

Dockerfile(反应):

FROM node:14

WORKDIR /client

ENV PATH /client/node_modules/.bin:$PATH

COPY package*.json .

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

docker-compose.yaml

version: "3"
services:
  server: 
    build: 
      context: ./server
    ports: 
      - "5000:5000"
    networks:
      - default
    depends_on: 
      - db
  client-development:
    build: 
      context: ./client
    stdin_open: true
    ports:
      - "3000:3000"
    environment:
        - NODE_ENV=development
        - CHOKIDAR_USEPOLLING=true
    networks: 
      - default
    depends_on: 
      - server
  db:
    image: "mongo"
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: test
    networks:
      - default
    volumes:
      - mongo-data:/data/db

networks: 
  default:
    driver: bridge

volumes:
  mongo-data:
    driver: local

【问题讨论】:

  • 您的开发和部署环境可以不同,这很好。我建议您使用现有的基于主机的 Node 环境进行日常开发,即使您最终是通过 Docker 进行部署。

标签: node.js reactjs docker deployment hot-reload


【解决方案1】:

您需要创建一个绑定挂载,以便在主机和运行您的 react 应用程序的容器之间进行镜像,例如

Dockerfile

FROM node:14
WORKDIR /react-starter-kit
COPY . .
RUN npm i
CMD [ "npm", "start" ]

docker-compose.yaml

version: '3.8'
services:
  starter:
    build: .
    image: react-starter-kit
    restart: always
    ports:
      - 3000:3000
    volumes:
      - ./node_modules:/react-starter-kit/node_modules
      - ./src:/react-starter-kit/src

【讨论】:

    猜你喜欢
    • 2020-11-16
    • 2013-02-11
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2020-07-13
    • 2017-03-13
    • 2021-01-25
    • 1970-01-01
    相关资源
    最近更新 更多