1. nginx load balancing docker deployment
3.1 Create folder
Create redis-related folders in the home user directory
mkdir -p /home/jun/docker/nginx
cd /home/jun/docker/nginx
创建三个目录
mkdir shell #构建、启动、停止等脚本
mkdir dockerfile #dockerfile目录
mkdir volumes #挂载配置、日志、数据文件
3.2 Prepare dockerfile
cd /home/hd/docker/nginx/dockerfile
vim Dockerfile
Dockerfile contents
FROM nginx:1.21.3-alpine
USER hd
WORKDIR /home/hd
#CMD
3.3 Build the image through dockerfile
Create a shell script file
build script: build docker image
vi build
#!/bin/bash
DOCKER_PATH=$PWD/../
sudo docker build -f $DOCKER_PATH/dockerfile/Dockerfile -t nginx:1.21.3-alpine $DOCKER_PATH/dockerfile/
run script
vi run: Build and start the docker container
#!/bin/bash
DOCKER_PATH=$PWD/../
NAME=nginx
PORT=80
VERSION=1.21.3-alpine
docker run -d \
-p ${PORT}:80 \
-p 443:443 \
-p 8080:8080 \
--name ${NAME} \
-v /etc/localtime:/etc/localtime \
-v $DOCKER_PATH/volumes/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $DOCKER_PATH/volumes/log:/var/log/nginx \
-v $DOCKER_PATH/volumes/conf/ssl.crt:/etc/nginx/ssl.crt \
-v $DOCKER_PATH/volumes/conf/ssl_nopass.key:/etc/nginx/ssl_nopass.key \
--restart=unless-stopped nginx:${VERSION}
exec script
vi exec: Enter the docker container that has been successfully started
#!/bin/sh
sudo docker exec -it nginx /bin/bash
logs script
vi logs: Docker container log When starting the container fails, you can execute the query log
#!/bin/bash
sudo docker logs nginx
restart
vi restart: docker container restart
#!/bin/sh
sudo docker restart nginx
rm
vi rm: delete docker container
#!/bin/sh
sudo docker rm nginx
rmi
vi rmi: Delete the docker image and it needs to be executed only when the dockerfile file is modified.
#!/bin/sh
sudo docker rmi nginx:1.21.3-alpine
start
vi start: start docker container
#!/bin/sh
sudo docker start nginx
stop
vi stop: stop docker container
#!/bin/sh
sudo docker stop nginx
File permissions
chown -R hd:hd /home/hd/docker-files/nginx
executable
chmod +x /home/hd/docker-files/nginx/shell/*
user root;
pid /var/run/nginx.pid;
error_log /var/log/nginx/error.log warn;
events {
use epoll;
worker_connections 16384;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
client_max_body_size 50m;
gzip_static always;
gunzip on;
gzip on;
gzip_types
text/css
text/javascript
text/xml
text/plain
text/x-component
application/javascript
application/json
application/xml
application/rss+xml
font/truetype
font/opentype
application/vnd.ms-fontobject
image/svg+xml;
keepalive_timeout 65;
client_body_timeout 10s;
client_header_timeout 10s;
send_timeout 10s;
proxy_read_timeout 180s;
proxy_connect_timeout 10s;
access_log off;
upstream upstreamAPP {
server 192.212.8.117:443;
server 192.212.8.116:443;
}
server {
listen 443 ssl;
server_name baidu.com;
ssl_certificate /etc/nginx/ssl.crt;
ssl_certificate_key /etc/nginx/ssl_nopass.key;
location / {
proxy_pass https://upstreamAPP;
proxy_set_header Host $host:443;
# proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
proxy_ssl_session_reuse off;
proxy_ssl_protocols TLSv1.2;
}
}
}