微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Docker 使用 yarn 将 MongoDB 与 NodeJS 组合在一起

如何解决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 举报,一经查实,本站将立刻删除。