使用docker部署nodejs、mongodb、redis应用程序
我有一个包含nodejs、mongodb和redis的应用程序。我想将此应用部署到heroku。但我不知道我如何才能做到这一点。我读过一些文章。不幸的是,我无法理解 docker文件使用docker部署nodejs、mongodb、redis应用程序,docker,heroku,deployment,docker-compose,Docker,Heroku,Deployment,Docker Compose,我有一个包含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-compos
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一起使用,因此您可能希望首先让应用程序运行 要构建和推送应用程序,请选中此项。 您需要传递一个环境变量才能在正确的端口上启动应用程序,以便在Dockerfile中使用 暴露$PORT CMD npm启动-p$端口 这样,您将在Heroku提供的端口上运行服务器 对于redis,您可以使用Heroku插件: 您可以通过在应用的根目录下添加heroku.yml来指定加载项:
我希望这能帮助您继续。谢谢您的建议。我如何处理docker compoase.yml中的环境变量。我的意思是我必须手动将它们添加到heroku吗?要在heroku中部署docker应用程序,您不需要docker compose文件,只需使用docker文件。Heroku自动传递$PORT变量,您不需要设置它。事实上,您甚至不需要公开它,因为Heroku将自动选择$PORT中指定的一个。如果要在docker compose中以env变量的形式传递端口(用于本地使用),请选中此处