Jenkins中挂载Nginx容器中目录的相关问题
来源:4-4 前后端项目Jenkins任务配置(2)
黄焖没有鸡
2020-09-03 22:47:35
老师您好!下面是我这两天瞎折腾的问题,恳求您的解答~
第一个问题:我想把nginx容器中的日志目录、配置文件、静态资源目录映射到宿主机,然后我像下面写(主要是写一行太长了),会提示-v不存在:
所以要如何写成多行(为了书写方便)呢?
第二个问题:我挂载完后,在Jenkins中构建成功:
然后我去虚拟机用docker ps -a查看容器,发现这个容器启动失败了:
接着我在虚拟机里面删除了这个容器,用docker run手动又重复创建了一个容器,启动虽然成功了,但是我使用docker exec -it community_pc sh进去容器内部后,发现/usr/share/nginx/html 目录是没有东西的,其他挂载的目录同样如此。我刚开始的想法是我以为nginx容器启动后会默认生成一些配置,然后挂载到宿主机,结果并非如此,所以我猜测是不是要在宿主机先配置好,容器内部才会有配置呢?
第三个问题:后来我删除了-v挂载的所有目录,结果能成功访问nginx服务了,但是我访问/login显示404,我判断是由于我在前端项目中的路由设置成了history模式,而nginx这边我没有配置,所以出现了这种情况,不知道是不是这个原因。
我之前是照搬您的配置和代码没任何问题,前端是hash路由,Jenkins里面写的bash也没有挂载,容器完全正常。我感觉我把自己折腾坏了,这两天了我还没弄好,我是不是得认真学一下nginx再来搞这个呀。。。
2回答
黄焖没有鸡
提问者
2020-09-03
补一张-v命令错误图:
Brian
2020-09-04
第一个问题:我想把nginx容器中的日志目录、配置文件、静态资源目录映射到宿主机,然后我像下面写(主要是写一行太长了),会提示-v不存在:
所以要如何写成多行(为了书写方便)呢?
——这里就要使用docker-compose了啊,用命令复制可以会把/t这种特殊字符复制出来。
第二个问题:我挂载完后,在Jenkins中构建成功:
然后我去虚拟机用docker ps -a查看容器,发现这个容器启动失败了:
接着我在虚拟机里面删除了这个容器,用docker run手动又重复创建了一个容器,启动虽然成功了,但是我使用docker exec -it community_pc sh进去容器内部后,发现/usr/share/nginx/html 目录是没有东西的,其他挂载的目录同样如此。我刚开始的想法是我以为nginx容器启动后会默认生成一些配置,然后挂载到宿主机,结果并非如此,所以我猜测是不是要在宿主机先配置好,容器内部才会有配置呢?
——容器里面是否有代码或者文件,取决于Dockerfile,即,有没有COPY成功
第三个问题:后来我删除了-v挂载的所有目录,结果能成功访问nginx服务了,但是我访问/login显示404,我判断是由于我在前端项目中的路由设置成了history模式,而nginx这边我没有配置,所以出现了这种情况,不知道是不是这个原因。
——你如果想看nginx的日志,直接把/var/log映射到宿主机即可,或者使用npm run serve(使用nodejs镜像进行运行,然后看docker容器的日志也是可以的)。
我之前是照搬您的配置和代码没任何问题,前端是hash路由,Jenkins里面写的bash也没有挂载,容器完全正常。我感觉我把自己折腾坏了,这两天了我还没弄好,我是不是得认真学一下nginx再来搞这个呀。。。
——你先玩会单独用node镜像运行服务,不用Nginx,nginx只是一个前置的代理作用,用于域名、HTTPS的代理。
相似问题