以下是一个简化的Docker部署Node.js项目的示例,包括使用Docker Compose部署Mysql、Redis和MongoDB服务。
首先,创建一个docker-compose.yml文件,用于定义服务:
version: '3'
 
services:
  nodejs-app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    environment:
      - MYSQL_HOST=mysql
      - REDIS_HOST=redis
      - MONGO_URL=mongodb://mongodb/mydb
    depends_on:
      - mysql
      - redis
      - mongodb
 
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydb
 
  redis:
    image: redis:alpine
 
  mongodb:
    image: mongo:4.2
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: example然后,创建一个Dockerfile来构建Node.js应用的Docker镜像:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]最后,确保你的Node.js项目包含package.json和应用的启动文件,如server.js。
在包含这两个文件的目录中运行以下命令来启动服务:
docker-compose up --build这将启动Node.js 应用、MySQL、Redis和MongoDB服务。你的Node.js应用将能够连接到这些数据库服务,因为它们都在同一个Docker网络上,并且使用服务名作为主机名。