1、.env 文件,用来进行复杂的配置
nginx_addr=192.156.0.2
web1_addr=192.156.0.3
web2_addr=192.156.0.4
2、docker-compose.yaml 文件,使用了上面的 .env 文件里定义的变量
services:
nginx:
container_name: mynginx
image: "centos:nginx"
ports:
- "9090:80"
privileged: true
volumes:
- "/home/sugarppig/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
networks:
mynginx-net:
ipv4_address: ${nginx_addr}
web1:
container_name: web1
image: "centos:jdk"
ports:
- "8080:80"
privileged: true
volumes:
- "/home/sugarppig/nginx/web1/:/var/www/html/"
networks:
mynginx-net:
ipv4_address: ${web1_addr}
web2:
container_name: web2
image: "centos:jdk"
ports:
- "8081:80"
privileged: true
volumes:
- "/home/sugarppig/nginx/web2/:/var/www/html/"
networks:
mynginx-net:
ipv4_address: ${web2_addr}
networks:
mynginx-net:
driver: bridge
ipam:
config:
- subnet: 192.156.0.0/16
version: "3"
3、nginx.conf 文件
user nginx;
worker_processes 2;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#include /etc/nginx/conf.d/*.conf;
upstream mydocker {
server 192.156.0.3;
server 192.156.0.4;
}
server {
listen 80;
server_name mydocker;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_pass http://mydocker;
}
}
}
4、启动容器
docker-compose up -d
5、访问浏览器
虚拟机 IP 地址为 10.0.0.7,所以访问 http://10.0.0.7:9090/,因为没有设置权重,可以看到 web1、web2 轮流出现。