Docker 搭建GO程序错误日志
一、修改代码后重置容器,结果没有任何变化。删除容器重新创造也一样。
Docker需要创造容器建立在镜像的基础上,所以要先删除容器和镜像,再重新配置才能修改。
二、数据库连接登录不上,且显示是对127.0.0.1的链接失败。
在docker中,mysql不是在127.0.0.1的IP下工作,要用创建mysql的容器名作为mysql的主机IP,才能正常链接。
三、MySQL容器创建失败
错误信息:Error response from daemon: ports are not available: exposing port TCP 0.0.0.0:3306 -> 127.0.0.1:0: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted. 这是由于docker通过端口映射将Mysql的端口暴露给了宿主机。宿主机可以通过这个端口访问,所以需要宿主机的端口不被占用。
四、在Cookie中存在登录认证,且部分网站能通过认证的前提下,部分网站不能通过认证。
在网页重定向时,使用了错误的状态码。将状态码从http.StatusMovedPermanently(301)换成http.StatusFound(302)。原因是使用301,浏览器会记录重定向的信息,如果之前错误地进行了一次网页重定向,那么就会被记录,而302则不会。所以改变后还需要清除浏览器记录。
五、GO程序中有对数据库的初始化函数,但是直接调用初始化函数不能成功,在某个网页路由函数中调用却能成功。
在docker-compose.yml给go程序设置依赖项,原因是创建的容器的时候,如果先创建go程序的容器,此时就链接不上mysql,所以初始化函数就无效。在所有容器创建后,再通过初始化函数就可以初始化成功。所有在设置依赖项后,就可以实现go程序实现初始化。
depends_on:
- mysql-master
六、Doker-Compose时出现错误。
错误信息:x go build -ldflags=“-w -s” -o /app/myapp ./go" did not complete successfully: exit code: 1 编辑的代码文件没有保存,就可能出现这个错误。
七、用网页初始化数据库,网页访问错误,但确实实现了初始化数据库。
错误信息:2026/02/05 19:35:00 [Recovery] 2026/02/05 - 19:35:00 panic recovered:
runtime error: invalid memory address or nil pointer dereference 错误原因,初始化函数返回的error是空值,却错误调用了error.Error()。
八、Nginx显示正常运行,访问http:"//localhost却未找到界面。
原因是Nginx反向代理的是"http:“//localhost”",为了不出现找到界面这种错误。要在go程序的路由定义进行处理。
九、Nginx有无对程序的性能影响。
用Apache实现。
ab -n 10000 -c 100 http://localhost/ #Nginx
ab -n 10000 -c 100 http://localhost:8080/ #直接暴露端口
将输出交给AI分析,在调试换环境中,Nginx对程序的性能提升不明显。
十、重大问题:预计是要将程序通过Docker Desktop部署到阿里云服务器上,但是云服务器不支持虚拟化CPU,所以不能用Docker Desktop部署。
更多推荐
所有评论(0)