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 (将#修改为@)