Docker Desktop → Docker CE 完整迁移部署方案
全程分为5 步环境准备 → 迁移文件 → 部署配置 → 启动验证 → 维护规范。一、先明确两个环境区别Docker Desktop开发用Windows/Mac自带 ComposeDocker CELinux 服务器生产环境CentOS / Ubuntu迁移核心把你的docker-compose.yml.env 配置文件 数据库数据 → 搬到 Linux二、服务器环境安装 Docker CE Docker Compose标准脚本1. 安装 Docker CEUbuntu / CentOS 通用Ubuntubash运行sudo apt update sudo apt install -y docker.io sudo systemctl enable docker sudo systemctl start dockerCentOSbash运行sudo yum install -y docker sudo systemctl enable docker sudo systemctl start docker2. 安装 Docker Composev2 插件生产标准# 1. 添加 Docker 官方源必须做否则找不到包 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 2. 更新源 sudo apt update # 3. 安装 Docker Compose 插件终于能找到了 sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin三、整体迁移思路本地 Docker Desktop导出应用镜像传到服务器Docker CE服务器导入镜像上传 docker-compose.yml .env 配置文件一键启动Python MySQL Redis数据库初始化 / 数据迁移四、最关键镜像如何迁移save /load步骤 1本地Docker Desktop查看你的镜像名bash运行docker images找到你的 Python 应用镜像例如plaintextmy-python-app latest步骤 2本地导出镜像打包成文件bash运行docker save -o my-python-app.tar my-python-app:latest会生成一个my-python-app.tar镜像包。步骤 3把 tar 包传到服务器用 scp /xftp/rz 都行示例 scpbash运行scp my-python-app.tar sysadm你的服务器IP:/opt/myapp/步骤 4服务器 Docker CE 导入镜像bash运行cd /opt/myapp docker load -i my-python-app.tar导入成功后服务器就有镜像了bash运行docker images五、服务器完整部署结构plaintext/opt/myapp/ ├── docker-compose.yml ✔ 编排文件 ├── .env ✔ 配置 ├── my-python-app.tar ✔ 迁移过来的镜像 └── db-init/ ✔ MySQL初始化脚本六、docker-compose.yml最终生产版注意image 直接用你导入的镜像名不再 buildyamlversion: 3.8 services: python-app: image: my-python-app:latest # 你迁移过来的镜像 restart: always env_file: .env ports: - 8000:8000 depends_on: - mysql - redis mysql: image: mysql:8.0 restart: always env_file: .env volumes: - mysql_data:/var/lib/mysql - ./db-init:/docker-entrypoint-initdb.d redis: image: redis:7 restart: always volumes: - redis_data:/data volumes: mysql_data: redis_data:七、.env 配置直接用env# Python APP_PORT8000 # MySQL MYSQL_ROOT_PASSWORDroot123 MYSQL_DATABASEmydb MYSQL_USERmyuser MYSQL_PASSWORDmypassword MYSQL_HOSTmysql MYSQL_PORT3306 # Redis REDIS_HOSTredis REDIS_PORT6379八、服务器一键启动bash运行cd /opt/myapp docker compose up -d查看状态bash运行docker compose ps docker compose logs -f九、数据库迁移Desktop → CE本地导出bash运行docker exec 本地mysql容器 mysqldump -u root -p mydb db.sql服务器导入bash运行docker cp db.sql 服务器mysql容器:/db.sql docker exec 服务器mysql容器 mysql -u root -p mydb /db.sql十、你只需要记住的 5 条命令bash运行# 本地导出镜像 docker save -o app.tar 镜像名 # 服务器导入镜像 docker load -i app.tar # 启动 docker compose up -d # 查看日志 docker compose logs -f # 停止 docker compose down想直接执行 SQL 语句不进入交互界面docker-compose exec mysql mysql -u root -pSHOW DATABASES;USE 你的数据库名;SHOW TABLES;docker-compose down -vdocker-compose up -dmysql -u root -p testdb 1.sqlTRUNCATE TABLE 表名;TRUNCATE比DELETE快很多直接清空数据重置自增 ID。topsudo apt install htop -yhtopdf -hsudo docker compose -f docker-compose-Pro.yml up -dsudo docker compose exec mysql mysql -u root -p rdocker-compose exec -T mysql mysql -u root -p csai_sales /home/sysadm/scripts/update_database_users.sqlpandoc -f docx -t markdown Manual_Part1.docx -o Manual_Part1.md3 种最简解决方案微服务 / 部署通用方案 1推荐Nginx 统一反向代理只留一个对外端口例如统一 80 / 443前端/后端接口/api浏览器看起来全程同一个端口无跨端口、无跨域。方案 2后端开启 CORS 跨域允许在 8004 后端服务配置允许前端端口跨域访问放行浏览器跨端口请求。方案 3前端不要写死:8004绝对地址改用相对路径不走完整 IP 端口自动同源。