如何解决使用Docker部署Node.js,MongoDB,Redis应用
我有一个包含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 start -p $ PORT
这样,您将在Heroku提供的端口上运行服务器。
对于redis,您可以使用Heroku附加组件:https://devcenter.heroku.com/articles/heroku-redis
通过在应用程序的根目录https://devcenter.heroku.com/articles/build-docker-images-heroku-yml#setup-defining-your-app-s-environment上添加heroku.yml,您可以指定附加组件。
我希望这可以帮助您前进。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。