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

我启用了镜像,但是无法访问容器 #479

Closed
sclodestar opened this issue Feb 28, 2025 · 9 comments
Closed

我启用了镜像,但是无法访问容器 #479

sclodestar opened this issue Feb 28, 2025 · 9 comments

Comments

@sclodestar
Copy link

大家好

我跟着教程做好了数据库(本地),构建了镜像,运行了容器,日志无错误,但是无法访问容器8085,不知道是哪里不对,有没有大神指导一下?

[root@localhost ~]# docker logs xiaoju-survey-app
nginx start

[email protected] start:prod
cross-env NODE_ENV=production node dist/main

[Nest] 31 - 02/28/2025, 2:08:47 AM LOG [NestFactory] Starting Nest application...
[Nest] 31 - 02/28/2025, 2:08:47 AM LOG [InstanceLoader] TypeOrmModule dependencies initialized +48ms
[Nest] 31 - 02/28/2025, 2:08:47 AM LOG [InstanceLoader] ConfigHostModule dependencies initialized +0ms
[Nest] 31 - 02/28/2025, 2:08:47 AM LOG [InstanceLoader] ServeStaticModule dependencies initialized +1ms
............
[Nest] 31 - 02/28/2025, 2:08:47 AM LOG [RouterExplorer] Mapped {/api/upgrade/upgradeFeatureStatus, GET} route +1ms
[Nest] 31 - 02/28/2025, 2:08:47 AM LOG [NestApplication] Nest application successfully started +10ms
server is running at: http://127.0.0.1:3000

这是容器启动命令:
docker run -d --name xiaoju-survey-app -p 8085:80 -e XIAOJU_SURVEY_MONGO_URL=mongodb://xiaoju:[email protected]:27017/xiaoju?authSource=xiaoju xiaoju-survey-app

@luch1994
Copy link
Collaborator

能附上一些截图吗?你是访问8085端口,页面能访问,但是接口调不通,还是访问8085页面都打不开?

之前有其他人反馈过页面打开了,但是页面提示没有验证码,是数据库配置的问题,需要检查数据库的连接url是否正确

@sclodestar
Copy link
Author

能附上一些截图吗?你是访问8085端口,页面能访问,但是接口调不通,还是访问8085页面都打不开?

之前有其他人反馈过页面打开了,但是页面提示没有验证码,是数据库配置的问题,需要检查数据库的连接url是否正确

您好,页面打不开

[root@localhost ~]# curl http://192.168.16.249:8085
curl: (7) Failed connect to 192.168.16.249:8085; 拒绝连接
[root@localhost ~]# firewall-cmd --list-ports
20/tcp 21/tcp 22/tcp 80/tcp 443/tcp 13369/tcp 39000-40000/tcp 3306/tcp 27017/tcp 1991/tcp 8085/tcp

@luch1994
Copy link
Collaborator

luch1994 commented Mar 3, 2025

如果连页面都打不开的话,跟后端是没关系的,可以尝试一下
1、确认一下IP是不是对的
2、docker ps -a | grep xiaoju-survey-app 看一下docker的运行状态
3、确认一下8085端口是否被占用
sudo lsof -i :8085 # Linux
netstat -ano | findstr :8085 # Windows
4、验证一下容器内的nginx状态是否正常
进入容器执行命令:docker exec -it xiaoju-survey-app bash
检查 Nginx 进程:ps aux | grep nginx
检查端口监听:netstat -tuln | grep :80
测试本地访问:curl -I localhost

@sclodestar
Copy link
Author

sclodestar commented Mar 3, 2025

[root@localhost ~]# docker ps -a | grep xiaoju-survey-app
9ae055f0bc75 xiaoju-survey-app "docker-entrypoint.s…" 3 days ago Up 3 days 0.0.0.0:8085->80/tcp, :::8085->80/tcp xiaoju-survey-app

[root@localhost ~]# lsof -i :8085 8085无异常,listen状态
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 13772 root 4u IPv4 6138254 0t0 TCP *:8085 (LISTEN)
docker-pr 13777 root 4u IPv6 6138259 0t0 TCP *:8085 (LISTEN)

[root@localhost ~]# docker exec -it xiaoju-survey-app bash

ps命令没有,所以 ps aux不能用,但是我可以查看nginx.conf的配置

root@6253674e43ef:/xiaoju-survey# cat /etc/nginx/nginx.conf
.......

server {
listen 8080;
# IPv6端口
listen [::]:8080;
server_name localhost; # 为不同的域名或子域名指定不同的配置

            # gzip config
            gzip on;
            gzip_min_length 1k;
            gzip_comp_level 9;

这里看到server是8080端口?

root@6253674e43ef:/usr/bin# ip addr
.....
115: eth0@if116: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever

尝试8080端口
[root@localhost ~]# curl 172.17.0.2:8080

<title>500 Internal Server Error</title>

500 Internal Server Error


nginx/1.22.1

[root@localhost ~]# curl 172.17.0.2:80
curl: (7) Failed connect to 172.17.0.2:80; 拒绝连接

@luch1994
Copy link
Collaborator

luch1994 commented Mar 3, 2025

刚刚看到nginx的配置,由之前的80端口改成8080端口了

你docker的命令改成
docker run -d --name xiaoju-survey-app -p 8085:8080 -e XIAOJU_SURVEY_MONGO_URL=mongodb://xiaoju:[email protected]:27017/xiaoju?authSource=xiaoju xiaoju-survey-app

之后也不行吗

@sclodestar
Copy link
Author

不行

500 Internal Server Error
nginx/1.22.1

@Wang-Mer
Copy link

Wang-Mer commented Mar 4, 2025

应该是 编译的 images 的问题 你试试 “xiaojusurvey/xiaoju-survey:1.3.1-slim”

@sclodestar
Copy link
Author

果然,github的dockerfile大坑

@Wang-Mer
Copy link

Wang-Mer commented Mar 4, 2025

能附上一些截图吗?你是访问8085端口,页面能访问,但是接口调不通,还是访问8085页面都打不开?

之前有其他人反馈过页面打开了,但是页面提示没有验证码,是数据库配置的问题,需要检查数据库的连接url是否正确

首先说明白 我有有科学的 科学正常 编译正常 没有任何的 问题
编译 的 images 好像是有问题的 我一开始使用 自行 编译的 images 分享 不打开 网页 并且有

getSpaceListError:AxiosError: Network Error
getSurveyList statusError: AxiosError: Network Error
获取验证码失败

的错误 我更换了 xiaojusurvey/xiaoju-survey:1.3.1-slim 这个 images 就没有问题了 我没有测试 xiaojusurvey/xiaoju-survey:1.3.1 这个版本是否有问题 @luch1994

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

3 participants