科技前沿

“在我机器上能跑”是程序员最头疼的问题之一。今天我来分享如何用Docker构建一致的开发环境,彻底解决环境差异带来的麻烦。

为什么需要Docker化开发环境

传统开发环境的痛点:

实战:Node.js项目的Docker化

Dockerfile

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
USER node
EXPOSE 3000
CMD ["node", "src/app.js"]

docker-compose.yml

version: '3.8'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - mongo
      - redis
  mongo:
    image: mongo:6
    volumes:
      - mongo-data:/data/db
  redis:
    image: redis:7-alpine

volumes:
  mongo-data:

开发模式vs生产模式

开发时我们需要热重载,生产时不需要。可以用多个docker-compose文件来区分。

实用命令速查

docker-compose up -d
docker-compose logs -f app
docker-compose exec app sh

原文发表于 WDSEGA Blog