作者回复: 这个错误提示一般是容器里头的应用无法连接mysql数据库造成,你需要核实应用的数据库连接字符串和密码设施是否正确(项目目录下的.env文件里头配置,可以在.env.example的基础上改)。
如果配置是对的,那么另外,docker-compose启动的容器环境有一个独立网络的,它和本地的网络是不同网络,你可否尝试docker exec容器上去尝试ping本机ip,看是否通。
作者回复: 谢谢你的建议!学习过程中碰到问题,自己主动解决,而且能把解决办法分享出来,这中学习方式收获最大。
作者回复: 你好,Staffjoy的前端构建是要求Linux或者Mac环境的,Windows环境暂不支持。如果是Windows环境,有几个办法可以尝试:
1. 安装Linux虚拟机(比如用Vagrant),在虚拟机里头构建。
2. 有学员给出了一个在windows构建的修复方案(https://github.com/spring2go/staffjoy/issues/6),可以尝试下
3. 跳过构建,直接用波波已经打好的镜像(https://hub.docker.com/u/boboweike),构建实际就是生成静态的html/js文件,然后放在nginx目录下,打成镜像,这步骤理解即可,没必要完全动手操作。
另外,如果在Linux或者Mac环境,也要求网络良好,github可以正常访问,因为Staffjoy的前端构建需要到github上下载东西。
作者回复: 你可以只构建那个修改的服务(如果是spring boot应用,用mvn clean package把jar先构建出来),然后在服务目录(里头有Dockerfile),用docker build命令打成镜像,然后docker push可以把镜像推到你的镜像仓库。
docker build/push的具体用法,网上很多示例搜一下即可。
作者回复: switchhosts是本地域名映射,测试用的。域名配在本地机器上,通过本地浏览器访问,实际服务的ip地址可以在远程。生产环境,如果在数据中心或云环境,一般有独立的域名服务器。
作者回复: staffjoy项目的原始代码设计是要求域名访问的。如果要绕开,直接用ip访问,也可以做到,不过需要修改代码。说实话staffjoy的代码不多,也不难看懂,我想学员认真学完课程,稍有编程基本功,都可以按需调整代码。
学习一个软件项目,只有你根据需要修改了它的源码,才能真正理解它,这也是一种有效学习方式,建议自己尝试修改staffjoy源码。
另外,应用(不限于springboot)在容器中运行,一般通过端口转发,可以在主机上直接进行访问,相关资料网上很多,例如这个讲得比较细https://www.cnblogs.com/kevingrace/p/9453987.html。
作者回复: 对,目前mail-svc用的是阿里云邮件推送服务(DirectMail),这个做法有点复杂,不少学员反馈邮件发送不成功,我后续会考虑把mail-svc改成简单的smtp发邮件方式。另外有2点建议:
1. 有一个绕过办法,mail-svc邮件发送失败的话会打异常日志,日志里头有邮件内容。新用户注册失败的话,异常日志里头有激活链接,复制到浏览器就可以激活注册。
2. 作为课程扩展,学员可以考虑改造一下mail-svc,让其支持简单的smtp等方式发送邮件,这个工作量其实不大的。高级的做法还可以发送到微信或者bearychat等即时通信渠道,这个稍微有一些工作量,但也不是很大。