2026 - docker 脚本部署
2026/5/21 20:21:34 网站建设 项目流程

说明

  • 基础环境:阿里云 ECS、OSS、Docker 社区版插件
  • Java 数据库及 Redis 连接可以使用 Docker 容器名,例如:url: jdbc:mysql://mysql:3306/control
  • a.sh 是创建目录脚本,b.sh 是拉取镜像脚本,c.sh 是启动项目脚本
    执行步骤:
  1. 创建脚本文件
  2. 授权脚本
  3. 执行脚本 a.sh
  4. 上传 Java、Vue 包
  5. 执行脚本 b.sh
  6. 调整脚本 c.sh 中的数据库连接密码等信息
  7. 执行脚本 c.sh
  8. 测试
toucha.sh b.sh c.shchmod775a.sh b.sh c.sh

脚本 a.sh

#!/bin/bashset-ebase="/data/docker"echo"==================== 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.conf<<'EOF' 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.cnf<<'EOF' [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] port=3306 init_connect='SET collation_connection = utf8mb4_general_ci' init_connect='SET NAMES utf8mb4' character-set-server=utf8mb4 skip-character-set-client-handshake skip-name-resolve max_connections=1000 EOFecho"==================== 4. 写入 Redis 配置 ===================="cat>$base/redis/conf/redis.conf<<'EOF' 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/null2>&1||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\-eTZ="Asia/Shanghai"\-eMYSQL_ROOT_PASSWORD=yUrpE433\-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\-eTZ="Asia/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.active=prodecho"==================== 部署完成!查看容器 ===================="dockerps

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询