Nginx配置
server {
listen 0.0.0.0:80;
listen 0.0.0.0:443 ssl http2;
server_name www.wmwm.me;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privatekey.pem;
return 301 https://wmwm.me$request_uri;
}
server {
listen 0.0.0.0:80;
listen 0.0.0.0:443 ssl http2;
server_name wmwm.me;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privatekey.pem;
location / {
proxy_pass http://localhost:[主机映射端口];
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^/api/check/?$ {
proxy_pass http://localhost:[主机映射端口];
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location ~* ^/api/user/info/avatar/?$ {
proxy_pass http://localhost:[主机映射端口];
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 3m;
}
location ~* ^/api/user/article/attachment/?$ {
proxy_pass http://localhost:[主机映射端口];
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 0;
}
error_page 502 =200 /502.html;
location = /502.html {
root /;
add_header Cache-Control "no-store, no-cache, must-revalidate, max-age=0";
}
}
start.sh
#!/bin/bash
echo '删除容器'
docker rm -f wmwm.me
docker run -it \
--rm \
-v $PWD/wmwm.me/:/wmwm.me/ \
-w /wmwm.me/ \
node:alpine sh -c "npm install pnpm -g && pnpm install && pnpm run generatePrismaClient"
docker run -it -d \
--name wmwm.me \
--restart always \
-e TZ=Asia/Shanghai \
-e DATABASE_URL="mysql://root:数据库root密码@mariadb:端口号/BLOG?schema=public" \
-e S3_ENDPOINT="minio" \
-e S3_PORT=s3 api端口号 \
-e S3_ACCESS_KEY=s3 access key \
-e S3_SECRET_KEY=s3 secret key \
-v $PWD/wmwm.me/:/wmwm.me/ \
-w /wmwm.me/ \
-p [主机映射端口不要用3000,改成其他的]:3000 \
node:alpine sh -c "npm install pnpm -g && pnpm run start"
docker network connect mariadb_default wmwm.me
docker network connect minio_default wmwm.me
deploy.sh
#!/bin/bash
echo "【上传项目源代码到服务器:/home/docker/wmwm.me/wmwm.me/】"
rsync -avzh -e 'ssh -p [端口号默认22]' --progress --delete \
--exclude=".git/" \
--exclude=".idea/" \
--exclude=".vscode/" \
--exclude="node_modules/" \
--exclude="pnpm-lock.yaml" \
--exclude=".next/" \
--exclude="out/" \
--exclude="所有文章/" \
. root@[服务器地址]:/home/docker/wmwm.me/wmwm.me/
echo -e "\n\n【上传 start.sh 到服务器:/home/docker/wmwm.me】"
rsync -avzh -e 'ssh -p [端口号默认22]' --progress \
start.sh root@[服务器地址]:/home/docker/wmwm.me
echo -e "\n\n【远程执行 start.sh】"
ssh -t root@[服务器地址] -p [端口号默认22] "cd /home/docker/wmwm.me; bash start.sh"
package.json
"deploy": "bash deploy.sh"