Docker 部署
约 376 字大约 1 分钟
拉取代码到服务器
git clone https://github.com/fastapi-practices/fastapi_best_architecture_ui.git
env
修改
/apps/web-antd/.env.production
中的VITE_GLOB_API_URL
为域名地址(末尾不带斜杠)更新 nginx 配置
进入
/scripts/deploy/nginx.conf
目录,修改nginx.conf
文件worker_processes auto; pid /run/nginx.pid; error_log /var/log/nginx/error.log; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 8192; } http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; client_max_body_size 5M; client_body_buffer_size 5M; gzip on; gzip_comp_level 2; gzip_types text/plain text/css text/javascript application/javascript application/x-javascript application/xml application/x-httpd-php image/jpeg image/gif image/png; gzip_vary on; keepalive_timeout 300; access_log /var/log/nginx/access.log; # 添加 https conf # server { # listen 80; # listen [::]:80; # # xxx.com 应该与 .env.production 中的配置保持一致 # server_name xxx.com; # rewrite ^(.*)$ https://$host$1 permanent; #} server { # 删除下面两行 # 更新为与上面 server_name 相同 server_name 127.0.0.1; # 添加 https conf # listen 443 ssl; # ssl_certificate /etc/ssl/xxx.pem; # 证书 # ssl_certificate_key /etc/ssl/xxx.key; # 密钥 # 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; client_max_body_size 5m; root /var/www/fba_ui; location / { try_files $uri $uri/ /index.html; } location /api/v1/ { proxy_pass http://fba_server:8001; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; } location /ws/socket.io/ { proxy_pass http://fba_server:8001/ws/socket.io/; 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_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 86400s; proxy_send_timeout 86400s; # WebSocket 支持 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_buffering off; } location /flower/ { proxy_pass http://fba_server:8555; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; proxy_redirect off; # WebSocket 支持 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location /static/ { alias /var/www/fba_server/backend/static; } location /static/upload/ { alias /var/www/fba_server/backend/static/upload; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } }
更新脚本文件
注意
如果你已通过后端 docker-compose 构建前端项目,此步骤和后面的剩余步骤直接跳过即可
networks: fba_network: # name: fba_network # driver: bridge external: true volumes: fba_static: external: true fba_static_upload: external: true services: fba_ui: build: context: . dockerfile: Dockerfile image: fba_ui:latest ports: - "80:80" - "443:443" container_name: fba_ui restart: always command: - nginx - -g - daemon off; volumes: # nginx https conf # 通过 docker 进行部署时,需要打开此配置项并确保<挂载到容器内的证书文件路径>配置 # 与 nginx conf 中的 ssl 证书文件路径配置一致,如果你直接将 ssl 证书文件 cp # 到了 docker 容器内,则无需挂载证书文件,直接将它们注释或删除即可 # local_ssl_pem_path:你在服务器存放 ssl pem 证书文件的路径,自行修改 # local_ssl_key_path: 你在服务器存放 ssl key 证书文件的路径,自行修改 # /etc/ssl/xxx.pem:挂载到容器内 ssl pem 证书文件的路径,自行修改 # /etc/ssl/xxx.key:挂载到容器内 ssl key 证书文件的路径,自行修改 - local_ssl_pem_path:/etc/ssl/xxx.pem - local_ssl_key_path:/etc/ssl/xxx.key - fba_static:/www/fba_server/backend/static networks: - fba_network
构建并启动容器
创建网络
docker network create fba_network
构建
docker-compose build fba_ui
启动
docker-compose run fba_ui