如何解决Docker 使用 yarn 将 MongoDB 与 NodeJS 组合在一起
我正在尝试使用 docker compose 将 node.js 服务器和 mongodb 数据库放入容器中。我也在尝试使用纱线作为我的包管理器。我的项目是用打字稿编写的,而我的 Mongodb 用作我的服务器的服务。
就我目前的情况而言,它工作得很好,但我不确定我的实现是否很好。当我运行 docker-compose up
时,容器和 node.js 和 mongodb 的镜像被创建,并且容器在指定的端口上运行。
问题是当我杀死 mongodb 容器时,我的 nodejs 服务器仍然可以访问数据库,就像我的容器 mongodb 容器仍在运行一样。我猜这是因为我的 mongodb 服务器也与我的 node.js 服务器运行在同一个容器上。
这是我的 Dockerfile:
FROM node:lts-alpine
ADD package.json /app/package.json
ADD yarn.lock /app/yarn.lock
workdir /app
# Installing packages
RUN yarn
ADD . /app
ENV NODE_ENV=production
# Building TypeScript files
RUN yarn build
CMD ["node","./dist/app.js"]
这些是我的 package.json 文件中的脚本:
"scripts": {
"lint": "eslint src/**/*.ts","format": "eslint src/**/*.ts --fix","start": "tsc && node --unhandled-rejections=strict ./dist/app.js","debug": "export DEBUG=* && npm run start","test": "echo \"Error: no test specified\" && exit 1","dev": "ts-node src/app.ts","build": "rm -rf build && tsc -p ."
},
这是我的 docker-compose.yml 文件:
version: "3"
services:
app:
container_name: app
restart: always
build:
context: .
dockerfile: Dockerfile
env_file: .env
volumes:
- ./src:/app/src
environment:
- COSMOSDB_HOST=${COSMOSDB_HOST}
- COSMOSDB_PORT=${COSMOSDB_PORT}
- COSMOSDB_dbnAME=${COSMOSDB_dbnAME}
- COSMOSDB_USER=${COSMOSDB_USER}
- COSMOSDB_PASSWORD=${COSMOSDB_PASSWORD}
ports:
- "4000:4000"
links:
- mongo
mongo:
container_name: mongo
image: mongo
ports:
- "27017:27017"
volumes:
- ./data:/data/db
我似乎不明白我的文件有什么问题... 你能帮助我吗 ?另外,您有什么建议可以给我优化构建或其他任何东西吗?谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。