2026-10-22 11:12:11
通过 docker-compose 快速入门 Docker 的核心步骤是安装 Docker 和 docker-compose,使用 docker-compose.yml 定义服务,并通过简单命令管理容器生命周期,以下结合 Ghost 博客部署实例详细说明:
一、安装 Docker 和 docker-compose安装 Docker使用官方脚本快速安装 Docker,执行以下命令:
$ curl -fsSL get.docker.com -o get-docker.sh$ sh get-docker.sh$ sudo systemctl start docker安装完成后,运行测试命令验证安装:
$ sudo docker run hello-world若看到 Hello from Docker! 的输出,说明安装成功。
安装 docker-compose通过 pip3 安装 docker-compose(需提前安装 Python3 和 pip):
$ pip3 install docker-composeGhost 是一个基于 NodeJS 的轻量级博客框架,传统部署需手动安装 Node 和配置环境变量,而 Docker 可简化流程。以下通过两种方法演示部署:
方法一:直接运行容器(简单但可配置性低)运行容器执行以下命令启动 Ghost 容器:
$ docker run -d --name some-ghost -p 80:2368 -v /path/to/ghost/blog:/var/lib/ghost/content ghost:latest-d:后台运行容器。
--name some-ghost:指定容器名称。
-p 80:2368:将容器内 2368 端口映射到宿主机 80 端口。
-v /path/to/ghost/blog:/var/lib/ghost/content:挂载本地目录到容器内,实现数据持久化。
访问博客直接通过宿主机 IP 访问 Ghost 博客(如
创建项目目录新建文件夹(如 lc-docker),并在其中创建 docker-compose.yml 文件,内容如下:
version: '3'services: ghost: image: ghost:latest ports: - 9030:2368 volumes: - ./data:/var/lib/ghost/content environment: - url=image: ghost:latest:使用最新版 Ghost 镜像。
ports: - 9030:2368:将容器内 2368 端口映射到宿主机 9030 端口。
volumes: - ./data:/var/lib/ghost/content:挂载本地 data 目录到容器内。
environment: - url=...:设置博客对外访问的 URL(避免后台链接错误)。
restart: always:容器退出时自动重启。
创建数据目录在项目目录下创建 data 文件夹,用于存储 Ghost 数据:
$ mkdir data启动容器在项目目录下执行以下命令:
$ docker-compose up -d # 构建并启动容器-d:后台运行。其他命令:
$ docker-compose stop # 停止容器(不删除)$ docker-compose rm # 删除容器配置 Nginx 反向代理编辑 Nginx 配置文件(如 /etc/nginx/conf.d/ghost.conf),添加以下内容:
server { listen 80; server_name articles.leetcode-cn.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header HOST $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass重启 Nginx 使配置生效:
$ sudo systemctl restart nginx配置 SSL(可选)使用 certbot 自动申请并配置 SSL 证书:
$ certbot --nginx -d articles.leetcode-cn.com按提示完成操作后,Nginx 将自动启用 HTTPS。
容器与镜像
镜像:类似类,定义了应用的运行环境(如 Ghost 镜像包含 NodeJS 和博客代码)。
容器:类似对象,基于镜像创建并运行实例(如通过 ghost:latest 镜像启动的容器)。
端口映射通过 -p 宿主机端口:容器端口 将容器内服务暴露到宿主机,实现外部访问。
数据挂载通过 -v 本地路径:容器路径 将本地目录挂载到容器内,实现数据持久化(避免容器删除后数据丢失)。
docker-compose.yml 结构
version:定义 Compose 文件版本。
services:定义服务列表(如 Ghost 博客、数据库等)。
environment:设置环境变量(如博客 URL)。
restart:定义容器退出时的重启策略。
通过以上步骤,可快速掌握 Docker 和 docker-compose 的核心用法,并完成 Ghost 博客的部署。