我有一个包含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}任何建议都会对我有帮助
发布于 2020-08-30 15:13:40
我建议您将应用程序和数据库分开部署。我可能错了,但据我所知,你不能在Heroku中使用docker-compose,所以你可能首先要让应用程序至少运行起来。
要构建和推送应用程序,请检查此https://devcenter.heroku.com/articles/container-registry-and-runtime。您需要传递一个环境变量来在正确的端口上启动应用程序,因此在您的Dockerfile中使用
EXPOSE $PORT CMD npm start -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-app-s-environment。
我希望这能帮助你继续前进。
https://stackoverflow.com/questions/63654169
复制相似问题