起因是这样的有个项目我挺喜欢它的UI设计和操作逻辑,发现这个项目能够部署成网页,然后我部署的网页项目太多了,所以想要弄一个基础的访问路径。而 Vue 的 publicPath就是为此准备的。

publicpath配置:https://cli.vuejs.org/zh/config/#publicpath

为了方便起见采用相对路径'./',这样可以在部署到主机上的时候自己定义子路径。在添加publicpath的时候发现个别图片总是加载不出来,排查了很长一段时间才发现是使用绝对路径的问题,如果项目刚好部署在根目录下是不会暴露出来的,所以之前没有人发现。

Docker build

使用hash值pull:https://docs.docker.com/reference/cli/docker/image/pull/#pull-an-image-by-digest-immutable-identifier

docker copy 指令:https://docs.docker.com/reference/dockerfile/#copy

docker build 指令:https://docs.docker.com/build/concepts/context/#local-context-with-dockerfile-from-stdin

docker build 的时候默认使用的是当前BASH/CMD的上下文。如果你的dockerfile位于项目最外层构建的时候使用docker build -t weektodo就不会有什么问题。但是如果你是有一个专门的docker目录来存储与docker相关的文件的上面的命令就会出现问题,在你使用COPY指令或是其他有关文件路径的都会出现找不到文件的问题。COPY ../package.json ../yarn.lock /app/虽然意识到了是根据当前上下文来的,但是这句构建指令还是错的,后来才发现docker是以当前上下文作为根路径的,所以../是无法实现的,https://docs.docker.com/reference/dockerfile/#copy:~:text=the%20build%20context-,When%20copying%20source%20files%20from%20the%20build%20context%2C%20their%20paths%20are,.,-If%20the%20source文档这里有展开说明。明白了这点,我就采用了下面的命令docker build -t weektodo ./docker/但是还是无法正确的获取到文件,这只是指名了dockerfile的所在位置,实际上还是以dockerfile所在的位置作为根目录的。正确的命令是docker build -t weektodo:latest -f docker/Dockerfile .

在使用docker部署的过程当中发现本地的项目能够安装成浏览器应用,而同样的项目在其他主机上却无法安装成浏览器应用,但是github提供的demo网站也是可以安装的,所以我怀疑是https的原因,后来经过验证确实如此,不是加密过的通信浏览器认为不安全就不能安装成浏览器应用。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注