返回

初步接触Docker

Docker 笔记:常用命令整理

镜像管理

  • 查看镜像:docker images
  • 拉取镜像:docker pull xxx
  • 删除镜像:docker rmi xxx

容器管理

  • 查看容器:docker ps / docker ps -a
  • 进入容器:docker exec -it 容器名 bash
  • 停止容器:docker stop 容器名
  • 删除容器:docker rm 容器名

docker-compose 常用

  • 启动:docker-compose up -d
  • 停止:docker-compose down
  • 查看:docker-compose ps
  • 拉镜像:docker-compose pull

常用组合示例

  • docker run -d -p 8080:80 nginx
  • docker exec -it my-container bash
  • docker-compose up –build

清理空间

  • docker system prune -a

我的fre123部署流程

  • 以阿里云为例
  1. 容器部署
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 回到 home 目录,确保路径正确
cd ~

# 克隆项目
git clone https://github.com/fre123-com/fre123-nav.git

# 进入 deploy 目录(docker-compose.yml 文件所在)
cd fre123-nav/deploy

# 拉取镜像
sudo docker-compose pull

# 启动服务
sudo docker-compose up -d
  1. 成功部署
1
2
3
4
5
6
7
[root@iZbp15al0g417943ohz4h1Z deploy]# docker-compose ps
WARN[0000] /root/fre123-nav/deploy/docker-compose.yaml: version is obsolete 
NAME               IMAGE                               COMMAND                   SERVICE            CREATED          STATUS         PORTS
fre123-mongo       mongo:3.6                           "docker-entrypoint.s…"   fre123-mongo       10 seconds ago   Up 7 seconds   0.0.0.0:27077->27017/tcp, :::27077->27017/tcp
fre123-nav-admin   fre123dev/fre123-nav-admin:v0.1.0   "/bin/bash nginx_sta…"   fre123-nav-admin   10 seconds ago   Up 7 seconds   0.0.0.0:3001->80/tcp, :::3001->80/tcp
fre123-nav-api     fre123dev/fre123-nav-api:v0.1.0     "pipenv run api pro"      fre123-nav-api     10 seconds ago   Up 6 seconds   0.0.0.0:8765->8765/tcp, :::8765->8765/tcp
fre123-nav-web     fre123dev/fre123-nav-web:v0.1.0     "/bin/sh start.sh"        fre123-nav-web     10 seconds ago   Up 7 seconds   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
  1. 下一步:浏览器访问

你可以现在在浏览器访问以下地址:

1
2
http://<你的阿里云服务器公网IP>:3000     # 主站前端
http://<你的阿里云服务器公网IP>:3001     # 管理后台
  1. 注意:确保端口已在阿里云安全组开放 如果访问不了,可能是安全组没放行这些端口:
  • 3000(前端)
  • 3001(管理后台)
  • 8765(后端 API,如果你需要访问)
  • 27077(MongoDB 端口,通常不建议暴露) 你可以登录 阿里云控制台 → 安全组 找到对应实例的安全组,手动添加规则(其他服务器同理)
  1. 服务器防火墙设置 除了要在阿里云开放安全组,你还需要设置服务器本地防火墙开放,具体操作步骤可查看初步接触Nginx的文章

🐳 Nuxt 博客项目从 Windows 上传到阿里云服务器并用 Docker 部署上线教程

本教程适用于:在 Windows 本地开发 Nuxt 3 项目,在阿里云服务器(Linux)上通过 Docker 打包、运行并对外提供服务。


前置条件

  • 本地开发环境(Windows) 上已有一个可正常构建的 Nuxt 3 项目。
  • 阿里云服务器(推荐 CentOS 或 Ubuntu)已安装 Docker(无需本地安装 Docker)。
  • 拥有服务器的 SSH 登录权限(FinalShell、XShell、PuTTY 等工具)。
  • (可选)已注册 Docker Hub 账号,用于推送镜像分享给他人。

将项目上传到阿里云服务器

方法一:FinalShell 右键上传

  1. 打开 FinalShell,连接到你的阿里云服务器。
  2. 在左侧文件管理器中定位到本地项目文件夹。
  3. 右键选中项目根目录,选择 “上传到服务器”,目标路径可选 /root/nuxt-blog

方法二:命令行 scp

1
2
# 在 Windows PowerShell 或 Git Bash 中运行:
scp -r C:/path/to/your/nuxt-blog root@<服务器IP>:/root/nuxt-blog

在服务器上编写 Dockerfile

  1. SSH 登录服务器:

    1
    
    ssh root@<服务器IP>
    
  2. 进入项目目录:

    1
    
    cd /root/nuxt-blog
    
  3. 创建并编辑 Dockerfile(适用于Nuxt3):

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    # ---------- 构建阶段 ----------
    FROM node:18 AS builder
    
    # 设置工作目录
    WORKDIR /app
    
    # 增加 Node.js 可用内存(防止内存不足)
    ENV NODE_OPTIONS="--max-old-space-size=3072"
    
    # 拷贝依赖配置并安装
    COPY package.json yarn.lock ./
    RUN yarn install
    
    # 拷贝全部项目源码
    COPY . .
    
    # 避免 nuxt 权限问题
    RUN chmod +x node_modules/.bin/nuxt
    
    # 构建项目
    RUN node_modules/.bin/nuxt build
    
    # ---------- 运行阶段 ----------
    FROM node:18 AS runner
    
    # 设置工作目录
    WORKDIR /app
    
    # 仅复制必要文件,减小镜像体积
    COPY --from=builder /app/.output .output
    COPY --from=builder /app/node_modules ./node_modules
    COPY --from=builder /app/package.json ./
    
    # Nuxt 默认端口
    EXPOSE 3000
    
    # 启动服务
    CMD ["node", ".output/server/index.mjs"]
    

构建 Docker 镜像

在项目根目录执行:

1
2
# <用户名> 换成你的 Docker Hub 用户名或任意标识
docker build -t <用户名>/nuxt-blog:v1.0 .
  • -t:为镜像打标签,格式为 仓库名:版本
  • .:表示当前目录的 Dockerfile。

运行 Docker 容器

1
2
3
4
docker run -d \
  -p 3000:3000 \
  --name nuxt-blog-container \
  <用户名>/nuxt-blog:v1.0
  • -d:后台运行容器。
  • -p 3000:3000:映射宿主机 3000 端口到容器 3000 端口。
  • --name:指定容器名称,方便管理。

测试访问:打开浏览器,访问 http://<服务器IP>:3000,能正常看到 Nuxt 页面即部署成功。


(可选)推送镜像到 Docker Hub

  1. 登录:

    1
    
    docker login
    
  2. 推送:

    1
    
    docker push <用户名>/nuxt-blog:v1.0
    

之后其他人只需:

1
2
docker pull <用户名>/nuxt-blog:v1.0
docker run -d -p 3000:3000 <用户名>/nuxt-blog:v1.0

即可一键运行。


(可选)用 Nginx 反向代理统一入口

若你希望通过域名(如 blog.linsou.asia)访问,并隐藏端口,可在服务器上安装并配置 Nginx:

  1. 安装 Nginx:

    1
    2
    
    sudo yum install -y nginx   # CentOS
    # 或 sudo apt install -y nginx   # Ubuntu
    
  2. 新建配置 /etc/nginx/conf.d/nuxt-blog.conf

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    server {
      listen 80;
      server_name blog.linsou.asia;
    
      location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
      }
    }
    
  3. 校验并重载:

    1
    2
    
    sudo nginx -t
    sudo systemctl reload nginx
    

访问 http://blog.linsou.asia 即可直达 Nuxt 应用。


恭喜你!🎉 通过本教程,你已掌握从 Windows 传输项目、在 Linux 服务器上打包 Docker 镜像并部署 Nuxt 应用的全流程。

使用 Hugo 构建
主题 StackJimmy 设计