二级域名
起因
由于在一台服务器上部署了多个不同的应用/服务,之前是使用域名+端口号的方式来区分应用。但是这种方式在应用或服务多了以后,就不好使了,对于个人来说,需要记上应用或服务对应的端口号以及服务的域名后缀。
于是就有了这篇文章记录。
在 Nginx 配置子域名
- 在 Nginx 中配置需要的子域名(我习惯将每一个子域名的配置分开来,一个子域名对应一个字配置文件)
- 在 Nginx 默认配置文件 http 节点下配置:
include /path/to/config/*.conf
- 在 Nginx 默认配置文件 http 节点下配置:
Portainer配置:
1 |
|
- 定时任务配置:
1 |
|
配置域名解析

- 在域名管理界面中,添加一条解析记录:
- 记录类型为
A, - 主机记录为: 子域名(如:docker),
- 记录值为服务器的IP地址,
- 提交保存。
- 记录类型为
总结
- 整个配置过程并不复杂,概况来说就是三步:
- 部署应用;
- 添加 Nginx 配置(如 portainer.conf);
- 在域名解析页面中,添加子域名的解析记录。
补充:
1. 关于在 Docker 中,配置好子域名后,发现无法访问的情况。
- 原因: 是因为 docker 的网络策略默认情况下,容器与容器之间是无法相互访问的,在启动容器的时候,得给她们指定好网络组。
- 又因为容器重启,IP 会随之变化,所以我们需要利用 docker 网络,通过容器 name 在容器中互相访问。
Docker 网络
1. 创建自定义网络
- 指令:
docker network create domain - 默认使用的是 bridge 驱动
- 不在同一个 docker network 中的容器,不能互相访问,他们不在同一个网段上
2. 创建容器时,指定 docker network
-
启动第一个容器,指令:
docker run -it --name portainer --network domain -p 9000:9000 portainer/portainer -
--network参数指定容器使用的网络 -
启动第二个容器,指令:
docker run -p 6379:6379 --network domain --name redis -v /docker/data/redis/redis.conf:/etc/redis/redis.conf -v /docker/data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes -
启动一个 redis 服务容器,通过在 redis 容器访问 portainer 容器,使用 curl 工具来协助我们验证
验证:
- 使用
docker exec进入redis容器中
1 | # docker exec -it redis bash |
- 使用
curl工具进行验证:
1 | # curl http://portainer:9000 |
- 使用
docker network inspect domain来查看 docker network 信息,检查两个容器是否链接到了同一个网络下:
1 | [ |