Debian Docker如何部署应用
导读:在 Debian 上使用 Docker 部署应用的完整流程 一 安装与准备 更新系统并安装依赖 sudo apt update && sudo apt install -y apt-transport-https ca...
在 Debian 上使用 Docker 部署应用的完整流程
一 安装与准备
- 更新系统并安装依赖
- sudo apt update & & sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
- 添加 Docker 官方 GPG 密钥与软件源(推荐 Debian 12 的方式)
- sudo install -m0755 -d /etc/apt/keyrings
- curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- echo “deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装 Docker 引擎
- sudo apt update & & sudo apt install -y docker-ce docker-ce-cli containerd.io
- 启动并设置开机自启
- sudo systemctl start docker & & sudo systemctl enable docker
- 验证安装
- docker version 或 docker run --rm hello-world
- 可选 安装 Docker Compose 插件(推荐)
- sudo apt install -y docker-compose-plugin
- 可选 国内网络加速(编辑 /etc/docker/daemon.json)
- { “registry-mirrors”: [“https://< 你的镜像加速地址> ”] }
- 修改后执行:sudo systemctl restart docker
二 构建镜像与运行容器
- 示例一 直接运行官方镜像(Nginx 静态站点)
- docker run -d --name web -p 80:80 nginx:latest
- 示例二 使用 Dockerfile 构建 Python Flask 应用
- 目录结构
- app.py
- requirements.txt
- Dockerfile
- app.py
- from flask import Flask app = Flask(name) @app.route(“/”) def hello(): return “Hello, Docker on Debian!” if name == “main”: app.run(host=“0.0.0.0”, port=5000)
- requirements.txt
- flask
- Dockerfile
- FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 5000 CMD [“python”, “app.py”]
- 构建与运行
- docker build -t flask-web-app .
- docker run -d --name flask -p 5000:5000 flask-web-app
- 目录结构
- 常用管理命令
- 查看:docker ps -a
- 日志:docker logs -f flask
- 进入:docker exec -it flask bash
- 停止/启动/删除:docker stop|start|rm flask
三 多服务与 Compose 编排
- 示例 docker-compose.yml(Flask + PostgreSQL)
- version: “3.8” services: web: build: . ports: - “5000:5000” environment: - POSTGRES_DB=appdb - POSTGRES_USER=app - POSTGRES_PASSWORD=secret depends_on: - db db: image: postgres:15 environment: - POSTGRES_DB=appdb - POSTGRES_USER=app - POSTGRES_PASSWORD=secret volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata:
- 启动与常用操作
- 启动:docker compose up -d(或 docker-compose up -d)
- 查看日志:docker compose logs -f
- 停止:docker compose down
- 说明
- 生产环境建议为数据库设置强密码、持久化卷,并考虑使用 secrets 管理敏感信息。
四 反向代理与域名访问
- 安装 Nginx
- sudo apt install -y nginx
- 配置反向代理(/etc/nginx/sites-available/app.conf)
- server { listen 80; server_name app.example.com; location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
- 启用站点并热重载
- sudo ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/
- sudo nginx -t & & sudo systemctl reload nginx
- 防火墙与 DNS
- 开放端口:sudo ufw allow 80,443/tcp
- DNS 添加 A 记录:将 app.example.com 指向服务器公网 IP
五 安全与运维最佳实践
- 以非 root 用户运行容器(将用户加入 docker 组后使用 docker 命令)
- sudo usermod -aG docker $USER(重新登录生效)
- 镜像与系统持续更新(安全补丁)
- 定期执行:sudo apt update & & sudo apt upgrade -y 与 docker image prune -f
- 日志与存储
- 配置日志轮转(/etc/docker/daemon.json):
- { “log-driver”: “json-file”, “log-opts”: { “max-size”: “10m”, “max-file”: “3” } }
- 配置日志轮转(/etc/docker/daemon.json):
- 网络安全
- 仅暴露必要端口,使用 UFW 或云安全组限制来源 IP
- 数据库等敏感服务不对外映射端口,仅内网访问
- 敏感信息管理
- 使用环境变量或 Docker Secrets 管理密码与密钥,避免硬编码
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Docker如何部署应用
本文地址: https://pptw.com/jishu/757581.html
