溫馨提示×

如何用Linux Docker搭建開發環境

小樊
43
2025-10-20 11:20:18
欄目: 智能運維

一、前置準備:安裝Docker

在Linux系統上搭建Docker開發環境的第一步是安裝Docker引擎。以常見的Ubuntu/Debian系統為例,安裝步驟如下:

  1. 更新軟件包列表:sudo apt-get update
  2. 安裝Docker依賴:sudo apt-get install docker-ce docker-ce-cli containerd.io
  3. 啟動Docker服務并設置開機自啟:sudo systemctl start docker && sudo systemctl enable docker
  4. 驗證安裝:docker --version(查看版本) && sudo docker run hello-world(運行測試鏡像,確認功能正常)。

二、選擇合適的基礎鏡像

基礎鏡像是Dockerfile的起點,需根據開發語言和環境需求選擇:

  • 通用開發環境:優先選擇官方鏡像(如python:3.11、node:18、openjdk:17),它們包含完整的語言運行時和常用工具,適合大多數場景。
  • 精簡環境:若需減少鏡像體積(如CI/CD流水線),可選擇slim版本(如python:3.11-slim、node:18-slim),它們基于Debian slim構建,去除了不必要的組件。
  • Alpine Linux:若對體積敏感(如微服務),可選擇Alpine版本(如python:3.11-alpine、node:18-alpine),其體積僅5-10MB,但需注意部分依賴(如glibc)可能不兼容。

三、構建自定義鏡像(可選但推薦)

通過Dockerfile定義鏡像構建流程,實現環境一致性。以下是常見語言的Dockerfile示例:

1. Python開發環境

# 使用Python 3.9 slim基礎鏡像
FROM python:3.9-slim  
# 設置工作目錄(容器內的默認路徑)
WORKDIR /app  
# 復制依賴文件(requirements.txt)到工作目錄
COPY requirements.txt .  
# 安裝依賴(-y表示自動確認)
RUN pip install --no-cache-dir -r requirements.txt  
# 復制項目代碼到工作目錄
COPY . .  
# 暴露應用端口(如Flask默認80端口)
EXPOSE 80  
# 定義容器啟動命令(運行Flask應用)
CMD ["python", "app.py"]  

構建命令:docker build -t my-python-app .-t指定鏡像名稱,.表示Dockerfile所在目錄)。

2. Node.js開發環境

# 使用Node.js 18基礎鏡像
FROM node:18  
# 設置工作目錄
WORKDIR /usr/src/app  
# 復制package.json和package-lock.json(用于依賴管理)
COPY package*.json ./  
# 安裝依賴
RUN npm install  
# 復制項目代碼
COPY . .  
# 暴露應用端口(如Express默認3000端口)
EXPOSE 3000  
# 定義容器啟動命令(啟動Express應用)
CMD ["node", "app.js"]  

構建命令:docker build -t my-node-app .。

四、運行開發容器

通過docker run命令啟動容器,并配置必要的參數:

  • 掛載本地目錄:將本地項目文件夾掛載到容器內,實現代碼實時同步(避免重復構建鏡像)。
    示例:docker run -it --name my-python-dev -v /path/to/local/project:/app -p 8080:80 my-python-app
    參數說明:-it(交互式終端)、--name(容器名稱)、-v(掛載目錄,格式:本地路徑:容器路徑)、-p(端口映射,格式:宿主機端口:容器端口)。
  • 后臺運行:若需讓容器在后臺運行,添加-d參數(如docker run -d --name my-node-dev -v $(pwd):/app -p 3000:3000 my-node-app)。

五、使用Docker Compose管理多容器環境

對于需要多個服務(如Web應用+數據庫)的項目,可使用docker-compose.yml文件定義和啟動多容器環境:

version: '3'  # 指定Compose文件版本
services:     # 定義服務列表
  web:        # Web服務(如Node.js應用)
    image: my-node-app  # 使用自定義鏡像
    ports:              # 端口映射
      - "3000:3000"     # 宿主機3000端口映射到容器3000端口
    volumes:            # 掛載目錄
      - ./:/app         # 本地當前目錄掛載到容器/app目錄
    working_dir: /app   # 設置容器工作目錄
    command: npm start  # 覆蓋鏡像默認啟動命令
  db:         # 數據庫服務(如PostgreSQL)
    image: postgres:13  # 使用PostgreSQL 13鏡像
    environment:        # 環境變量(配置數據庫密碼)
      POSTGRES_PASSWORD: example
    volumes:            # 數據卷(持久化數據庫數據)
      - postgres_data:/var/lib/postgresql/data
volumes:                # 定義數據卷(需在services外)
  postgres_data:        

啟動命令:docker-compose up -d-d表示后臺運行);停止命令:docker-compose down。

六、開發環境優化技巧

  1. 持久化數據:使用volumes掛載目錄或數據卷,避免容器刪除后數據丟失(如數據庫文件、項目配置)。
  2. 自定義鏡像:通過Dockerfile構建個性化鏡像,減少重復配置(如預裝依賴、設置環境變量)。
  3. 網絡配置:創建專用Docker網絡,讓容器間通過名稱通信(而非IP)。
    示例:docker network create dev-network(創建網絡),docker run --network dev-network --name service1 my-image(將容器加入網絡)。
  4. 使用.dockerignore:在項目根目錄創建.dockerignore文件,排除不必要的文件(如node_modules、.git、.log),加快鏡像構建速度。

七、常用命令速查

  • 查看運行中的容器:docker ps
  • 查看所有容器(包括停止的):docker ps -a
  • 進入運行中的容器:docker exec -it <容器ID或名稱> bash
  • 停止容器:docker stop <容器ID或名稱>
  • 刪除容器:docker rm <容器ID或名稱>
  • 查看鏡像:docker images
  • 刪除鏡像:docker rmi <鏡像ID或名稱>
  • 查看容器日志:docker logs <容器ID或名稱>
  • 構建鏡像:docker build -t <鏡像名稱> .。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女