在 Ubuntu 系统上安装 Docker 和 Docker Compose:
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
# 添加 Docker 官方 GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 添加 Docker 官方稳定源(noble)
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu noble stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新软件包索引
sudo apt-get update
# 安装 Docker 相关组件
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 测试 Docker 是否正常
docker --version
sudo docker run hello-world
# 查看版本
docker --version
# 将当前用户加入 docker 用户组(避免每次都要 sudo)
sudo usermod -aG docker $USER
# 应用用户组变更(需要重新登录或执行)
newgrp docker
# 再次测试
docker run hello-world
创建完整的 Nginx + Docker Compose 项目结构:
# 设置项目根目录
PROJECT_DIR=~/my-nginx
# 创建目录
mkdir -p $PROJECT_DIR/nginx $PROJECT_DIR/html
services:
nginx:
image: nginx:latest
container_name: my-nginx
ports:
- '80:80'
- '443:443'
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
- ./html:/usr/share/nginx/html:ro
extra_hosts:
- "host.docker.internal:host-gateway" # 添加这一行,用于容器内访问宿主机端口
restart: unless-stopped
成功后,访问 http://your_ipv4_address,看到页面就成功了!

在 Cloudflare 中添加 DNS 记录,例如:添加一条 example.com 的 A 记录,记录值为 IP 地址 your_ipv4_address。

example.com 的管理页面*.example.com 和 example.com
Cloudflare 会立即显示两个文本框:
在服务器上创建证书存储目录:
mkdir -p /etc/ssl
services:
nginx:
image: nginx:latest
container_name: my-nginx
ports:
- '80:80'
- '443:443'
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
- ./html:/usr/share/nginx/html:ro
- ./etc/ssl:/etc/ssl:ro # 添加这一行,指向您存放证书的目录
extra_hosts:
- "host.docker.internal:host-gateway" # 添加这一行,用于容器内访问宿主机端口
restart: unless-stopped
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/ssl/example.com.pem;
ssl_certificate_key /etc/ssl/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers off;
# 启用 gzip 压缩
gzip on;
gzip_types text/plain text/css application/javascript application/json image/svg+xml;
gzip_min_length 1k;
gzip_comp_level 5;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri /index.html;
}
}
docker compose down
docker compose up -d
完成上述所有步骤后,项目目录结构应该如下所示:
~/my-nginx/
├── docker-compose.yml # Docker Compose 配置文件
├── nginx/ # Nginx 配置目录
│ └── default.conf # Nginx 服务器配置
├── html/ # 网站静态文件目录
│ ├── index.html # 首页文件
└── etc/ # 证书和配置目录
└── ssl/ # SSL 证书目录
├── example.com.pem # SSL 证书文件
└── example.com.key # SSL 私钥文件