Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

部署docker-compose方式报错 #61

Open
qkxwxy123 opened this issue May 7, 2023 · 17 comments
Open

部署docker-compose方式报错 #61

qkxwxy123 opened this issue May 7, 2023 · 17 comments

Comments

@qkxwxy123
Copy link

部署后访问如图错误
1
应该是哪里问题呢。

@wangtao94
Copy link

报错+1

@Hello-hao
Copy link
Owner

什么系统?如果你在群里,可以私聊我,说一下具体报错的过程

@qkxwxy123
Copy link
Author

什么系统?如果你在群里,可以私聊我,说一下具体报错的过程

系统是ubuntu 22.04
不好意思没加群,被拒绝了

@Hello-hao
Copy link
Owner

抱歉,是因为群满了,你现在可以加,有两个位置

@Zhen-Bo
Copy link

Zhen-Bo commented Jun 1, 2023

目測原因: 域名填寫錯誤
image
為啥你請求的域名是: http://example.top:10089/$%7Bhttp://127.0.0.1:10089%7D/webInfo
解過來後是: http://example.top:10089/${http://127.0.0.1:10089}/webInfo
感覺像是 ${} 的參數被你當成字串處理了
而且更何況妳都有一 top 域名了, 為何網址列中還會有 http://127.0.0.1:10089

@Zhen-Bo
Copy link

Zhen-Bo commented Jun 1, 2023

或是你可以公開一下你的 docker-compose 沒有詳細的啟動檔案有點難幫你通靈出問題

@itodouble
Copy link

我也遇到那个域名的问题了
docker-compose.yml

version: "3"
services:
  tbed-free:
    image: hellohao/tbed-free:20230622
    container_name: tbed
    ports:
      - "10088:10088"
      - "10089:10089"
    volumes:
      - ./data/:/HellohaoData/
    environment:
      MYSQL_URL: jdbc:mysql://xxxxx.mysql.rds.aliyuncs.com/tbed?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      MYSQL_USER: xxxxx
      MYSQL_PASS: xxxxx
      HELLOHAO_WEB_HOST: https://tbed.xxx.top
      HELLOHAO_SERVER_HOST: https://tbeds.xxxxxx.top

nginx-tbed.conf

server {
    listen       443 http2;
    server_name  tbed.xxxx.top;

    location / {
        proxy_set_header   Host    $host;
        proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://tbed;
        index index.html;
    }
}
server {
    listen       443 http2;
    server_name  tbeds.xxxxx.top;

    location / {
        proxy_set_header   Host    $host;
        proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://tbeds;
        index index.html;
    }
}

@Hello-hao
Copy link
Owner

Hello-hao commented Jun 26, 2023

我也遇到了docker-compose.yml 的域名问题

version: "3"
services:
  tbed-free:
    image: hellohao/tbed-free:20230622
    container_name: tbed
    ports:
      - "10088:10088"
      - "10089:10089"
    volumes:
      - ./data/:/HellohaoData/
    environment:
      MYSQL_URL: jdbc:mysql://xxxxx.mysql.rds.aliyuncs.com/tbed?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      MYSQL_USER: xxxxx
      MYSQL_PASS: xxxxx
      HELLOHAO_WEB_HOST: https://tbed.xxx.top
      HELLOHAO_SERVER_HOST: https://tbeds.xxxxxx.top

nginx-tbed.conf

server {
    listen       443 http2;
    server_name  tbed.xxxx.top;

    location / {
        proxy_set_header   Host    $host;
        proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://tbed;
        index index.html;
    }
}
server {
    listen       443 http2;
    server_name  tbeds.xxxxx.top;

    location / {
        proxy_set_header   Host    $host;
        proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://tbeds;
        index index.html;
    }
}

如果你搭建完毕后用ip+端口可以访问,但是用域名无法访问,说明是nginx反向代理配置的不对。请你排查一下。
可能是因为proxy_pass参数配置的不对所导致的。

@itodouble
Copy link

IP+端口 也是访问不了 页面都是能打开 但是请求接口报错
https证书和proxy_pass 我写在nginx里面了

    upstream tbed {
        server 127.0.0.1:10089;
    }
    upstream tbeds {
        server 127.0.0.1:10088;
    }

使用域名和ip+端口 都是这三个接口报错 也都是把10089的给带上去了

image

image

@Zhen-Bo
Copy link

Zhen-Bo commented Jun 26, 2023

我也遇到那个域名的问题了 docker-compose.yml

version: "3"
services:
  tbed-free:
    image: hellohao/tbed-free:20230622
    container_name: tbed
    ports:
      - "10088:10088"
      - "10089:10089"
    volumes:
      - ./data/:/HellohaoData/
    environment:
      MYSQL_URL: jdbc:mysql://xxxxx.mysql.rds.aliyuncs.com/tbed?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      MYSQL_USER: xxxxx
      MYSQL_PASS: xxxxx
      HELLOHAO_WEB_HOST: https://tbed.xxx.top
      HELLOHAO_SERVER_HOST: https://tbeds.xxxxxx.top

nginx-tbed.conf

server {
    listen       443 http2;
    server_name  tbed.xxxx.top;

    location / {
        proxy_set_header   Host    $host;
        proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://tbed;
        index index.html;
    }
}
server {
    listen       443 http2;
    server_name  tbeds.xxxxx.top;

    location / {
        proxy_set_header   Host    $host;
        proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://tbeds;
        index index.html;
    }
}

不是.... 你的 https 是不是沒有帶憑證位置?
還是說其實你有帶了只是沒寫出

然後那個 index 好像也不用帶吧?
DB部分的

@Hello-hao
Copy link
Owner

IP+端口 也是访问不了 页面都是能打开 但是请求接口报错 https证书和proxy_pass 我写在nginx里面了

    upstream tbed {
        server 127.0.0.1:10089;
    }
    upstream tbeds {
        server 127.0.0.1:10088;
    }

使用域名和ip+端口 都是这三个接口报错 也都是把10089的给带上去了

image

image

我也不知道你这种情况具体出现的原因是什么。
如果你想让我排查就QQ联系我923453645注明来意,并需要提供你的服务器root账户密码等信息,我亲自调试排查问题。
如果你的服务器涉及隐私信息不方便透露,需要你自己解决了,从目前你提供的配置文件上来看,我没办法分析出原因。

@Hello-hao
Copy link
Owner

目測原因: 域名填寫錯誤 image 為啥你請求的域名是: http://example.top:10089/$%7Bhttp://127.0.0.1:10089%7D/webInfo 解過來後是: http://example.top:10089/${http://127.0.0.1:10089}/webInfo 感覺像是 ${} 的參數被你當成字串處理了 而且更何況妳都有一 top 域名了, 為何網址列中還會有 http://127.0.0.1:10089

之所以出现这种访问地址拼接错误,是因为你的后端服务没有启动成功所导致的。

@wangtao94
Copy link

wangtao94 commented Jun 26, 2023

docker-compose.yaml

version: "3"
services:
  tbed-free:
    image: hellohao/tbed-free:20230622
    ports:
      # 服务端
      - "10088:10088"
      # 前端
      - "10089:10089"
    volumes:
      - /docker/volume/tbed/HellohaoData/:/HellohaoData/
    environment:
      MYSQL_URL: jdbc:mysql://192.168.6.230/tbed?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      # 自定设置一个MySQL的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致
      MYSQL_PASS: tbed@KckcR5r2Jk7Mah
      # 前端域名(反代10089端口的域名)
      HELLOHAO_WEB_HOST: https://pic.xxx.cn
      # 后端域名(反代10088端口的域名)
      HELLOHAO_SERVER_HOST: https://pic-api.xxx.cn

nginx.pic.conf

# tbed
 server {
         #SSL 访问端口号为 443
         listen 443 ssl;
         #填写绑定证书的域名
         server_name pic.xxx.cn;
         #证书文件名称
         ssl_certificate ssl/xxx.cn.crt;
         #私钥文件名称
         ssl_certificate_key ssl/xxx.cn.key;
         ssl_session_timeout 5m;
         #请按照以下协议配置
         ssl_protocols TLSv1.2 TLSv1.3;
         #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
         ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
         ssl_prefer_server_ciphers on;
         location / {
               proxy_pass http://192.168.6.215:10089;
               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_set_header REMOTE-HOST $remote_addr;
         }
         access_log  logs/pic.trve.cn.log;
         error_log  logs/pic.trve.cn_error.log;
     }

 server{
      listen 80;
      server_name  pic.xxx.cn;
      access_log  logs/pic.xxx.cn.log;
      error_log  logs/pic.xxx.cn.log;
      return 301 https://$host$request_uri$is_args$args;
   }


 server {
         #SSL 访问端口号为 443
         listen 443 ssl;
         #填写绑定证书的域名
         server_name pic-api.trve.cn;
         #证书文件名称
         ssl_certificate ssl/xxx.cn.crt;
         #私钥文件名称
         ssl_certificate_key ssl/xxx.cn.key;
         ssl_session_timeout 5m;
         #请按照以下协议配置
         ssl_protocols TLSv1.2 TLSv1.3;
         #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
         ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
         ssl_prefer_server_ciphers on;
         location / {
               proxy_pass http://192.168.6.215:10088;
               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_set_header REMOTE-HOST $remote_addr;
         }
         access_log  logs/pic-api.xxx.cn.log;
         error_log  logs/pic-api.xxx.cn_error.log;
     }

 server{
      listen 80;
      server_name  pic-api.xxx.cn;
      access_log  logs/pic-api.xxx.cn.log;
      error_log  logs/pic-api.xxx.cn.log;
      return 301 https://$host$request_uri$is_args$args;
   }

image

@Hello-hao
Copy link
Owner

docker-compose.yaml

version: "3"
services:
  tbed-free:
    image: hellohao/tbed-free:20230622
    ports:
      # 服务端
      - "10088:10088"
      # 前端
      - "10089:10089"
    volumes:
      - /docker/volume/tbed/HellohaoData/:/HellohaoData/
    environment:
      MYSQL_URL: jdbc:mysql://192.168.6.230/tbed?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      # 自定设置一个MySQL的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致
      MYSQL_PASS: tbed@KckcR5r2Jk7Mah
      # 前端域名(反代10089端口的域名)
      HELLOHAO_WEB_HOST: https://pic.trve.cn
      # 后端域名(反代10088端口的域名)
      HELLOHAO_SERVER_HOST: https://pic-api.trve.cn

nginx.pic.conf

# tbed
 server {
         #SSL 访问端口号为 443
         listen 443 ssl;
         #填写绑定证书的域名
         server_name pic.trve.cn;
         #证书文件名称
         ssl_certificate ssl/taoo.wang.crt;
         #私钥文件名称
         ssl_certificate_key ssl/taoo.wang.key;
         ssl_session_timeout 5m;
         #请按照以下协议配置
         ssl_protocols TLSv1.2 TLSv1.3;
         #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
         ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
         ssl_prefer_server_ciphers on;
         location / {
               proxy_pass http://192.168.6.215:10089;
               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_set_header REMOTE-HOST $remote_addr;
         }
         access_log  logs/pic.trve.cn.log;
         error_log  logs/pic.trve.cn_error.log;
     }

 server{
      listen 80;
      server_name  pic.trve.cn;
      access_log  logs/pic.trve.cn.log;
      error_log  logs/pic.trve.cn.log;
      return 301 https://$host$request_uri$is_args$args;
   }


 server {
         #SSL 访问端口号为 443
         listen 443 ssl;
         #填写绑定证书的域名
         server_name pic-api.trve.cn;
         #证书文件名称
         ssl_certificate ssl/taoo.wang.crt;
         #私钥文件名称
         ssl_certificate_key ssl/taoo.wang.key;
         ssl_session_timeout 5m;
         #请按照以下协议配置
         ssl_protocols TLSv1.2 TLSv1.3;
         #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
         ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
         ssl_prefer_server_ciphers on;
         location / {
               proxy_pass http://192.168.6.215:10088;
               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_set_header REMOTE-HOST $remote_addr;
         }
         access_log  logs/pic-api.trve.cn.log;
         error_log  logs/pic-api.trve.cn_error.log;
     }

 server{
      listen 80;
      server_name  pic-api.trve.cn;
      access_log  logs/pic-api.trve.cn.log;
      error_log  logs/pic-api.trve.cn.log;
      return 301 https://$host$request_uri$is_args$args;
   }

image

已开放地址到公网,麻烦帮忙排查。请求路径多了$%7Bhttp://127.0.0.1:10089%7D这一节字符串

  • 首先确认你的docker-compose配置文件中的配置是否与官方文档中的一直。(除端口,数据库信息,域名信息,版本号外)
  • 其次 如果是用外置数据库,确保他是root用户名,否则不能正常连接,导致启动不成功。

下个版本我会增加设置数据库用户名的配置项,目前只能使用root
其次,

@wangtao94
Copy link

  1. 看到了,数据库用户名没有从环境变量取值,root写死的。
  2. _$%7Bhttp://127.0.0.1:10089%7D是从${host}/hellohao/config.json响应体取得的,看了后端代码,没有找到这个接口逻辑
  3. HELLOHAO_SERVER_HOST配置的值没有生效

@wangtao94
Copy link

docker-compose.yaml

version: "3"
services:
  tbed-free:
    image: hellohao/tbed-free:20230622
    ports:
      # 服务端
      - "10088:10088"
      # 前端
      - "10089:10089"
    volumes:
      - /docker/volume/tbed/HellohaoData/:/HellohaoData/
    environment:
      MYSQL_URL: jdbc:mysql://192.168.6.230/tbed?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      # 自定设置一个MySQL的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致
      MYSQL_PASS: tbed@KckcR5r2Jk7Mah
      # 前端域名(反代10089端口的域名)
      HELLOHAO_WEB_HOST: https://pic.trve.cn
      # 后端域名(反代10088端口的域名)
      HELLOHAO_SERVER_HOST: https://pic-api.trve.cn

nginx.pic.conf

# tbed
 server {
         #SSL 访问端口号为 443
         listen 443 ssl;
         #填写绑定证书的域名
         server_name pic.trve.cn;
         #证书文件名称
         ssl_certificate ssl/taoo.wang.crt;
         #私钥文件名称
         ssl_certificate_key ssl/taoo.wang.key;
         ssl_session_timeout 5m;
         #请按照以下协议配置
         ssl_protocols TLSv1.2 TLSv1.3;
         #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
         ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
         ssl_prefer_server_ciphers on;
         location / {
               proxy_pass http://192.168.6.215:10089;
               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_set_header REMOTE-HOST $remote_addr;
         }
         access_log  logs/pic.trve.cn.log;
         error_log  logs/pic.trve.cn_error.log;
     }

 server{
      listen 80;
      server_name  pic.trve.cn;
      access_log  logs/pic.trve.cn.log;
      error_log  logs/pic.trve.cn.log;
      return 301 https://$host$request_uri$is_args$args;
   }


 server {
         #SSL 访问端口号为 443
         listen 443 ssl;
         #填写绑定证书的域名
         server_name pic-api.trve.cn;
         #证书文件名称
         ssl_certificate ssl/taoo.wang.crt;
         #私钥文件名称
         ssl_certificate_key ssl/taoo.wang.key;
         ssl_session_timeout 5m;
         #请按照以下协议配置
         ssl_protocols TLSv1.2 TLSv1.3;
         #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
         ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
         ssl_prefer_server_ciphers on;
         location / {
               proxy_pass http://192.168.6.215:10088;
               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_set_header REMOTE-HOST $remote_addr;
         }
         access_log  logs/pic-api.trve.cn.log;
         error_log  logs/pic-api.trve.cn_error.log;
     }

 server{
      listen 80;
      server_name  pic-api.trve.cn;
      access_log  logs/pic-api.trve.cn.log;
      error_log  logs/pic-api.trve.cn.log;
      return 301 https://$host$request_uri$is_args$args;
   }

image
已开放地址到公网,麻烦帮忙排查。请求路径多了$%7Bhttp://127.0.0.1:10089%7D这一节字符串

  • 首先确认你的docker-compose配置文件中的配置是否与官方文档中的一直。(除端口,数据库信息,域名信息,版本号外)
  • 其次 如果是用外置数据库,确保他是root用户名,否则不能正常连接,导致启动不成功。

下个版本我会增加设置数据库用户名的配置项,目前只能使用root
其次,

image

@wangtao94
Copy link

@Hello-hao 问题解决。
原因:mysql用户名密码配置错误(未使用root用户),导致jdbc连接失败,config.json内容为初始值。
建议:后端启动失败的情况下,退出容器进程

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants