繁体   English   中英

用docker部署nodejs,mongodb,redis应用

[英]Deploying nodejs,mongodb,redis app with docker

我有一个包含 nodejs、mongodb 和 redis 的应用程序。我想将此应用程序部署到 heroku。但我不知道如何实现。 我读过一些文章。 不幸的是,我无法理解

docker 档案

FROM node:latest

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install 

COPY . .

EXPOSE 5000

CMD ["npm","start"]

docker-compose.yml

version: '3'
services:

  mongo:
    container_name: mongo
    image: mongo
  
    ports:
      - '27017:27017'
  redis: 
    image: redis
    

  app:
    container_name: password-manager-docker
    restart: always
    build: .
    
    ports:
      - '80:5000'
    links: 
      - mongo
      - redis
    environment: 
      MONGODB_URI: ${MONGODB_URI}
      clientID: ${clientID}
      clientSecret : ${clientSecret}
      PORT: ${PORT}
      NODE_ENV : ${NODE_ENV}
      JWT_SECRET_KEY: ${JWT_SECRET_KEY}
      JWT_EXPIRE: ${JWT_EXPIRE}
      REFRESH_TOKEN: ${REFRESH_TOKEN}
      JWT_REFRESH_SECRET_KEY: ${JWT_REFRESH_SECRET_KEY}
      JWT_REFRESH_EXPIRE: ${JWT_REFRESH_EXPIRE}
      JWT_COOKIE: ${JWT_COOKIE}
 

任何建议都会帮助我

我建议您单独部署应用程序和数据库。 我可能是错的,但据我了解,您不能将 docker-compose 与 Heroku 一起使用,因此您可能希望首先让该应用程序至少运行。

要构建和推送应用程序,请查看此https://devcenter.heroku.com/articles/container-registry-and-runtime 您将需要传递一个环境变量以在正确的端口上启动应用程序,因此在您的 Dockerfile 中使用

公开 $PORT

CMD npm 开始-p $PORT

这样,您将在 Heroku 提供的端口上运行服务器。

对于 redis,可以使用 Heroku 附加组件: https://devcenter.heroku.com/articles/heroku-redis

您可以通过在应用程序的根目录添加 heroku.yml 来指定附加组件: https://devcenter.heroku.com/articles/build-docker-images-heroku-yml#setup-defining-your-应用程序环境

我希望这可以帮助您前进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM