Flask、Vue部署总结
问题一:Docker启动容器时,容器迅速退出?
这个问题在于:第一点:docker容器必须保证前台必须有一个程序运行,否则会自动退出;
第二点: 如果使用 docker run --name test -itd -p 5000:5000 --rm ImageId /bin/bash, 这个命令会使用bash的方式运行容器,会直接进入容器,从而覆盖在Dockerfile中的CMD指令,一般来说,CMD命令是在启动容器的时候触发的,而RUN是在构建镜像的时候触发,ENTERPOINT是用于扩展启动容器时的参数的;
第三点: 每个容器启动后,我们都可以使用 docker logs -f containerID 查看启动日志
问题二:容器应用的划分?
不是所有的服务都需要集成到一个docker容器中启动,而是可以一定程度的拆分,使得镜像构建轻便,彼此解耦,只要通过端口的暴露来提供服务即可
问题三:supervisor 监控 celery进程时,报错: WorkerLostError('Could not start worker processes')
出现这个原因,有点莫名奇妙,因为当在自己的电脑上跑celery时发现没有问题,但是到了生成的容器中就出现了这个问题,原因是celery会根据当前的cpu核数来启动相应数量的worker,所以当在部署的时候要主要容器的内存大小;同时我们也可以通过-c 选项来
指定多少启动进程,从而控制内存的额外开销(celery worker -A manage.celery -c 4 -l info)
问题四:Vue前端使用https的方式与后端服务进行交互时,报错:Failed to execute 'open' on 'XMLHttpRequest': Invalid URL?
这个原因很简单,很大概率上是URL写错了。
问题五: 前端使用https与后端进行数据交互,这里主要是Nginx的配置中来进行ssl加密和解密,前端需要注意的是使用https为URL开头;如果是Websocket则使用wss开头