2026 - docker 脚本部署
说明基础环境阿里云 ECS、OSS、Docker 社区版插件Java 数据库及 Redis 连接可以使用 Docker 容器名例如url: jdbc:mysql://mysql:3306/controla.sh 是创建目录脚本b.sh 是拉取镜像脚本c.sh 是启动项目脚本执行步骤创建脚本文件授权脚本执行脚本 a.sh上传 Java、Vue 包执行脚本 b.sh调整脚本 c.sh 中的数据库连接密码等信息执行脚本 c.sh测试toucha.sh b.sh c.shchmod775a.sh b.sh c.sh脚本 a.sh#!/bin/bashset-ebase/data/dockerecho 1. 创建基础目录 mkdir-p$base/{nginx/{conf,conf.d,cert,html,logs},mysql8/{conf,data,mysql-files,logs},redis/{conf,data},server/logs}echo 2. 写入 Nginx 配置 cat$base/nginx/conf/nginx.confEOF worker_processes 2; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; client_max_body_size 100m; gzip_static on; 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; upstream server { ip_hash; server app:8080; } server { listen 80; server_name localhost; # HTTPS 如需开启取消注释并放入证书 # listen 443 ssl; # ssl_certificate /etc/nginx/cert/ycwjw.cn.pem; # ssl_certificate_key /etc/nginx/cert/ycwjw.cn.key; # ssl_session_timeout 5m; # ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # ssl_prefer_server_ciphers on; location ~ ^(/[^/]*)?/actuator.*(/.*)?$ { return 403; } location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; index index.html index.htm; } location /prod-api/ { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 86400s; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_buffering off; proxy_cache off; proxy_pass http://server/; } error_page 500 502 503 504 /50x.html; location /50x.html { root html; } } } EOFecho 3. 写入 MySQL8 配置 cat$base/mysql8/conf/my.cnfEOF [client] default-character-setutf8mb4 [mysql] default-character-setutf8mb4 [mysqld] port3306 init_connectSET collation_connection utf8mb4_general_ci init_connectSET NAMES utf8mb4 character-set-serverutf8mb4 skip-character-set-client-handshake skip-name-resolve max_connections1000 EOFecho 4. 写入 Redis 配置 cat$base/redis/conf/redis.confEOF requirepass 123456 save 900 1 save 300 10 save 60 10000 rdbcompression yes dbfilename dump.rdb appendonly yes appendfilename appendonly.aof appendfsync everysec EOFecho 5. 创建 Docker 网络 dockernetwork inspect my-net/dev/null21||dockernetwork create my-netecho 第一部分部署完成 脚本 b.sh#!/bin/bashset-eecho 6. 拉取镜像 dockerpull nginxdockerpull mysql:8.0.42dockerpull redis:7.4.6dockerpull bellsoft/liberica-openjdk-rocky:17.0.16-cdsecho 第二部分部署完成 脚本 c.sh#!/bin/bashset-eecho 7. 启动 MySQL dockerrun-d\--namemysql\--networkmy-net\--restartalways\-p3306:3306\-eTZAsia/Shanghai\-eMYSQL_ROOT_PASSWORDyUrpE433\-v/data/docker/mysql8/conf:/etc/mysql/conf.d\-v/data/docker/mysql8/data:/var/lib/mysql\-v/data/docker/mysql8/mysql-files:/var/lib/mysql-files\-v/data/docker/mysql8/logs:/var/log/mysql\mysql:8.0.42echo 8. 启动 Redis dockerrun-d\--nameredis\--networkmy-net\--restartalways\-p6379:6379\-v/data/docker/redis/conf/redis.conf:/etc/redis/redis.conf\-v/data/docker/redis/data:/data\redis:7.4.6\redis-server /etc/redis/redis.confecho 9. 启动 Nginx dockerrun-d\--namenginx\--networkmy-net\--restartalways\-p80:80\-v/data/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf\-v/data/docker/nginx/conf.d:/etc/nginx/conf.d\-v/data/docker/nginx/html:/usr/share/nginx/html\-v/data/docker/nginx/logs:/var/log/nginx\nginxecho 10. 启动 Java 应用 # 注意请把 app-admin.jar 放到 /data/docker/server/ 目录下dockerrun-d\--nameapp\--networkmy-net\--restartalways\-p8080:8080\-eTZAsia/Shanghai\-v/data/docker/server:/app/jar\-v/data/docker/server/logs:/logs\bellsoft/liberica-openjdk-rocky:17.0.16-cds\java-jar/app/jar/app-admin.jar--spring.profiles.activeprodecho 部署完成查看容器 dockerps