知用网
白蓝主题五 · 清爽阅读
首页  > 电脑技巧

用Docker搭建服务的完整部署流程,几分钟就能上手

在公司做后台开发那会儿,每次上线新功能都像打仗。ref="/tag/414/" style="color:#EB6E00;font-weight:bold;">服务器环境不一样,本地跑得好好的,一上生产就报错。后来用了Docker,整个流程顺滑多了。现在自己在家折腾NAS、博客、甚至小项目,全都靠它。

为什么用Docker部署

传统部署得手动装依赖、配环境、改配置文件,容易出错还难复现。Docker把应用和依赖打包成镜像,哪台机器都能跑,一致性拉满。比如你写了个Python Flask接口,别人不用管你装了什么库,直接run容器就行。

基本部署流程走一遍

假设你要部署一个简单的Node.js应用,先写个Dockerfile

FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

然后构建镜像:

docker build -t my-node-app .

启动容器:

docker run -d -p 3000:3000 --name myapp my-node-app

这时候访问localhost:3000就能看到页面了。加-d是后台运行,-p映射端口,名字也起好了,管理起来方便。

实际场景:部署一个WordPress博客

很多人想搭博客又怕配置PHP+MySQL麻烦。用Docker三两下搞定。写个docker-compose.yml

version: '3.8'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: wordpress
    volumes:
      - db-data:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: example
    depends_on:
      - db
    volumes:
      - wp-content:/var/www/html/wp-content

volumes:
  db-data:
  wp-content:

执行命令:

docker-compose up -d

等一会儿,打开浏览器输入localhost:8080,WordPress安装页面就出来了。数据库、应用、持久化全在配置里写好了,换台机器照样一键启动。

镜像推送与远程部署

本地测试完要上云服务器?先把镜像推到仓库。比如用Docker Hub:

docker tag my-node-app username/my-node-app:latest
docker push username/my-node-app:latest

然后去服务器拉取并运行:

docker pull username/my-node-app:latest
docker run -d -p 3000:3000 username/my-node-app

自动化的话,配合GitHub Actions或者Jenkins,代码一提交自动构建发布,完全不用人盯着。

日常维护小技巧

查日志别进容器,直接用命令:

docker logs myapp

看资源占用:

docker stats

更新服务时,先停旧的再起新的,避免端口冲突:

docker stop myapp
docker rm myapp
docker run -d -p 3000:3000 --name myapp new-image