Jenkins中挂载Nginx容器中目录的相关问题

来源:4-4 前后端项目Jenkins任务配置(2)

黄焖没有鸡

2020-09-03 22:47:35

老师您好!下面是我这两天瞎折腾的问题,恳求您的解答~

第一个问题:我想把nginx容器中的日志目录、配置文件、静态资源目录映射到宿主机,然后我像下面写(主要是写一行太长了),会提示-v不存在:

http://img.mukewang.com/climg/5f50db6909a13d7d07060185.jpg

所以要如何写成多行(为了书写方便)呢?

第二个问题:我挂载完后,在Jenkins中构建成功:

http://img.mukewang.com/climg/5f50fee2098f201107660496.jpg

然后我去虚拟机用docker ps -a查看容器,发现这个容器启动失败了:

http://img.mukewang.com/climg/5f50ff89096f9a8311970081.jpg

接着我在虚拟机里面删除了这个容器,用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命令错误图:http://img.mukewang.com/climg/5f50db890957cd2007130160.jpg

1

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的代理。

0

0 学习 · 1842 问题

查看课程