docker compose部署nginx
一、配置docker镜像源
1.配置镜像源
Docker的配置文件通常是 /etc/docker/daemon.json 如果文件不存在,请创建它。
vim /etc/docker/daemon.json
然后粘贴以下内容
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1ms.run",
"https://ccr.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.ccs.tencentyun.com"
]
}
2.重启Docker服务
为了让新的配置生效,必须重启Docker服务
#重新加载配置
sudo systemctl daemon-reload
#重启Docker服务
sudo systemctl restart docker
3.验证是否生效
docker info

通过拉取镜像,测试一下
#拉取hello-world镜像
docker pull hello-world
#查看镜像源列表
docker images
可以看到hello-world镜像拉取成功。可以通过docker rmi 镜像ID删除镜像
二、docker部署nginx
1.创建目录结构
我的配置和目录统一放在/software目录下。可以根据实际情况更改主目录
#创建主目录
sudo mkdir -p /software/nginx
#创建子目录(数据卷挂载data和conf目录)
sudo mkdir -p /software/nginx/conf
sudo mkdir -p /software/nginx/www
sudo mkdir -p /software/nginx/logs
创建一个html页面一会儿用于测试
cd /software/nginx
echo "<h1>✅ Hello Nginx! (Deployed by Docker Compose)</h1>" > www/index.html
2.编写配置文件
cd /software/nginx/conf
vim default.conf
然后粘贴以下内容
server
{
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}
或者反向代理
server
{
listen 80;
server_name 公网ip;
location / {
#场景1:代理本地服务
proxy_pass http://127.0.0.1:8080;
#场景2:代理同服务器的docker容器服务(容器名test,端口11111)
#proxy_pass http://test:11111
#请求头传递(必加)
#传递域名/IP
proxy_set_header Host @host;
#传递客户端真实IP
proxy_set_header X-Real-IP $remote_addr;
#传递代理链IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#超时配置
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
}
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}
3.创建docker-compose.yml文件
#进入主目录
cd /software/nginx
#编辑docker-compose.yml文件
vim docker-compose.yml
粘贴以下内容。
version: '3.8'
services:
nginx:
image: nginx:alpine # 选用轻量级 Alpine 版本(体积小、性能好)
container_name: nginx-server # 容器名,方便后续管理
restart: always # 容器异常退出时自动重启(保证服务稳定)
ports:
- "80:80" # 宿主机 80 端口 → 容器 80 端口(HTTP 访问)
- "443:443" #HTTPS端口
volumes:
# 挂载站点配置目录(覆盖容器默认配置)
- ./conf:/etc/nginx/conf.d
# 挂载静态文件目录(容器内 Nginx 默认静态目录)
- ./www:/usr/share/nginx/html
# 挂载日志目录(容器内日志映射到本地,方便查看)
- ./logs:/var/log/nginx
networks:
- nginx-network # 自定义网桥(隔离网络环境)
# 自定义网络(可选,但推荐,避免端口冲突)
networks:
nginx-network:
driver: bridge
在当前目录通过docker compose up -d命令启动容器,如下所示。
#进入docker-compose.yml所在目录
cd /software/mysql8
#启动容器
docker compose up -d
通过docker ps命令可以看到容器成功启动
访问一下
4.通过docker compose命令快捷管理容器
使用docker compose命令时,一定要在docker-compose.yml同级目录
docker compose up -d启动容器docker compose stop停止容器docker compose restart重启容器docker compose down停止并移出容器docker compose logs查看容器日志docker compose ps列出compose应用中的各个容器docker compose rm删除已停止的compose应用,它会删除容器和网络
评论