docker
运行 nginx
和 django
两个容器,每个容器有各自的 docker-compose.yaml
文件。两个容器要实现相互访问需连接同一网络,我还需要自定义容器IP(我不希望nginx配置文件的转发代理地址是动态变化的)
创建网络
首先创建一个名为 web_net
的网络,子网 172.32.0.0/24
可自定义
1
| docker network create --subnet=172.32.0.0/24 web_net
|
查看网络
删除某个网络
1
| docker network rm < NAME >
|
docker-compose.yaml 配置
nginx 容器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| version: "3.6"
networks: default: external: true name: web_net
services: nginx: image: nginx:latest container_name: nginx restart: always networks: default: ipv4_address: 172.32.0.2 ports: - "80:80" - "443:443"
|
django 容器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| version: "3.6"
networks: default: external: true name: web_net
services: django: image: django:latest container_name: django restart: always networks: default: ipv4_address: 172.32.0.3 ports: - "8080:8080"
|
nginx 配置 conf 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| upstream django { server 172.32.0.3:8080; }
# HTTPS server # server {
listen 443 ssl; server_name www.gaoyuanqi.cn;
...
location / { proxy_pass http://django; } }
|
访问 www.gaoyuanqi.cn
域名的请求将被转发到 172.32.0.3:8080
即 django
容器
说明
每个 docker-compose 都有
1 2 3 4 5 6 7 8 9 10 11
| networks: default: external: true name: web_net ...
services: xxx: networks: default: ipv4_address: 172.32.0.2
|
name
: 指定已存在的网络名称
ipv4_address
: 指定容器IP
172.32.0.0
和 172.32.0.1
最后一位的子网掩码位数 0
和 1
已经被使用,所以不能在 docker-compose.yaml
文件中写入了