2020系统综合实践 第2次实践作业

实现一个自定义的web容器服务

拉取nginx镜像并运行

参考nginx - Docker Hub

docker pull nginx
sudo docker run --name some-nginx -d -p 8000:80 nginx

更改默认Web目录的思路

尝试使用了官方readme中提供的

sudo docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx

但是似乎没啥用(也可能是我写错了),菜鸟教程也没有,就去网上找了篇教程:更改nginx网站根目录 - irisrain - 博客园
根据教程,只要修改/usr/local/nginx/conf/nginx.conf中指定的路径就可以了。但在Dockerfile中修改文件似乎有点麻烦。于是想了个办法:把配置文件复制出来,在外面改好了再用COPY命令直接覆盖原文件。

提取nginx配置文件

用容器中复制文件的命令:docker cp container:filepath destpath,尝试复制

sudo docker cp some-nginx:/usr/local/nginx/conf/nginx.conf .

然而报错了

Error: No such container:path: some-nginx:/usr/local/nginx/conf/nginx.conf

docker exec -it some-nginx /bin/bash进容器看了下,确实不存在这个文件……找了半天才发现是在/etc/nginx

然而这个文件里面并没有server{}。但是最后一行里有个include,去这里看看。

这个文件里包含了server{},那它就是我们的目标了,把他复制到宿主机里。

sudo docker cp some-nginx:/etc/nginx/conf.d/default.conf .
  • listen 监听端口值,这里修改为2420
  • root为Web默认目录,这里修改为/usr/share/nginx/my_web_dir
  • index访问容器时默认展示的页面

Dockerfile

FROM nginx
COPY default.conf /etc/nginx/conf.d/ # 替换nginx配置文件
COPY my_web_dir/ /usr/share/nginx/my_web_dir/ # 复制Web文件到容器中
EXPOSE 8000 # 声明对外暴露的端口号
  • 项目目录结构

构建并运行

sudo docker rm --force some-nginx # 之前的容器还占用着8000端口,先把它停掉
sudo docker build -t mynginx . # 构建镜像
sudo docker run --name myweb -d -p 8000:2420 mynginx # 运行容器

在浏览器访问localhost:8000

猜你喜欢

转载自www.cnblogs.com/zaynq/p/12727089.html