前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker之nginx容器中部署静态文件 原

Docker之nginx容器中部署静态文件 原

作者头像
克虏伯
发布2019-04-15 10:26:48
2.2K0
发布2019-04-15 10:26:48
举报

    docker中部署nginx, 然后nginx中部署静态资源文件, 上网搜了下, 觉得的搜到的文章讲的不是很清晰, 所以自己写一篇.

    注: Docker版本如下:

代码语言:javascript
复制
Client:
 Version:	17.12.0-ce
 API version:	1.35
 Go version:	go1.9.2
 Git commit:	c97c6d6
 Built:	Wed Dec 27 20:11:19 2017
 OS/Arch:	linux/amd64

Server:
 Engine:
  Version:	17.12.0-ce
  API version:	1.35 (minimum version 1.12)
  Go version:	go1.9.2
  Git commit:	c97c6d6
  Built:	Wed Dec 27 20:09:53 2017
  OS/Arch:	linux/amd64
  Experimental:	false

    本人使用的是ubuntu18, 已经安装了docker, 之后要有nginx镜像, 我使用的nginx镜像是nginx:1.14

    前后端分离, 前端单独部署在nginx中, 但是安装nginx, 看了教程, 感觉要装很多东西, 步骤很多...由于服务器上装了docker, 所以我们就用nginx容器了, 服务器上不再手动安装nginx.

1 创建名为nginx的volume

    用docker的卷,将nginx容器的目录挂载到host机器的本地文件中, 这样我们只需要修改host中对应目录的文件即可, 方便管理.

List-1.1 使用docker volume create 卷名创建数据卷

代码语言:javascript
复制
xx@xx-ubuntu:/opt/software/nginx/html$ docker volume create nginx
xx@xx-ubuntu:/opt/software/nginx/html$ docker volume ls
DRIVER              VOLUME NAME
local               nginx

     如下的List-1.2所示, 使用docker volume inspect nginx命令查看刚才创建的数据卷nginx, 可以看到这个数据卷对应到本地的/var/lib/docker/volumes/nginx/_data目录, 后面会去查看这个目录, 下面的内容中会涉及

List-1.2 

代码语言:javascript
复制
xx@xx-ubuntu:/opt/software/nginx/html$ docker volume inspect nginx 
[
    {
        "CreatedAt": "2018-12-18T20:18:41+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nginx/_data",
        "Name": "nginx",
        "Options": {},
        "Scope": "local"
    }
]

2 创建容器

    执行如下List-2.1中的命令, 这里值得注意的是"-v  nginx:/etc/nginx "这个参数, 这个的意思是将数据卷nginx挂载到容器的/etc/nginx目录

List-2.1

代码语言:javascript
复制
xx@xx-ubuntu:/opt/software/nginx/conf$ docker run -d -v nginx:/etc/nginx -p 80:80 --name nginx nginx:1.14

    查看数据卷nginx对应的本地目录(根据List-1.2我们得知数据卷nginx对应的本地目录), 如下List-2.2所示, 多出来很多东西, 这些文件都是nginx的. 我们来查看nginx.conf这个文件, 如List2.3所示, 可知关键是/etc/nginx/conf.d目录下的.conf文件, 默认有个default.conf, 我们拷贝default.conf, 重命名为hello.conf, 内容如下List-2.5所示

List-2.2 要用root去查看

代码语言:javascript
复制
root@xx-ubuntu:/var/lib/docker/volumes/nginx/_data# ll
total 48
drwxr-xr-x 3 root root 4096 12月 18 20:18 ./
drwxr-xr-x 3 root root 4096 12月 18 20:18 ../
drwxr-xr-x 2 root root 4096 12月 18 20:21 conf.d/
-rw-r--r-- 1 root root 1007 11月  6 21:28 fastcgi_params
-rw-r--r-- 1 root root 2837 11月  6 21:28 koi-utf
-rw-r--r-- 1 root root 2223 11月  6 21:28 koi-win
-rw-r--r-- 1 root root 5170 11月  6 21:28 mime.types
lrwxrwxrwx 1 root root   22 11月  6 21:28 modules -> /usr/lib/nginx/modules
-rw-r--r-- 1 root root  643 11月  6 21:28 nginx.conf
-rw-r--r-- 1 root root  636 11月  6 21:28 scgi_params
-rw-r--r-- 1 root root  664 11月  6 21:28 uwsgi_params
-rw-r--r-- 1 root root 3610 11月  6 21:28 win-utf

List-2.3 用root用户查看

代码语言:javascript
复制
root@xx-ubuntu:/var/lib/docker/volumes/nginx/_data# more nginx.conf 
...

    #包含/etc/nginx/conf.d目录下所有.conf结尾的文件
    include /etc/nginx/conf.d/*.conf;
}

List-2.4 用root用户去操作

代码语言:javascript
复制
root@xx-ubuntu:/var/lib/docker/volumes/nginx/_data/conf.d# ll
total 16
drwxr-xr-x 2 root root 4096 12月 18 20:21 ./
drwxr-xr-x 3 root root 4096 12月 18 20:18 ../
-rw-r--r-- 1 root root 1093 11月  6 21:28 default.conf
-rw-r--r-- 1 root root 1087 12月 18 20:21 hello.conf

List-2.5 其它不必要的内容被我删除了

代码语言:javascript
复制
root@xx-ubuntu:/var/lib/docker/volumes/nginx/_data/conf.d# more hello.conf 
server {
    #listen的值修改为自己要的端口 
    listen       3002;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        #root的值修改为自己的就可以了,表示这个目录下有我们要访问的静态资源
        root   /opt/html;
        index  index.html index.htm;
    }

}

    上述的完成后, 我们在本地目录下建个index.html, 如下List-2.6所示

List-2.6

代码语言:javascript
复制
xx@xx-ubuntu:/opt/software/nginx/html$ ll
total 12
drwxr-xr-x 2 mjduan mjduan 4096 12月 18 20:24 ./
drwxr-xr-x 4 mjduan mjduan 4096 12月 18 20:22 ../
-rw-r--r-- 1 mjduan mjduan  171 12月 18 20:24 index.html

    之后我们删除之前创建的容器nginx, 再创建一个容器, 如下List-2.7所示:

List-2.7

代码语言:javascript
复制
xx@xx-ubuntu:/opt/software/nginx/conf$ docker rm nginx 
nginx
xx@xx-ubuntu:/opt/software/nginx/conf$ docker run -d -v nginx:/etc/nginx -v /opt/software/nginx/html:/opt/html -p 3002:3002 -p 80:80 --name nginx nginx:1.14

    说明: List-2.7中, "-v nginx:/etc/nginx"是将数据卷nginx挂载到容器的/etc/nginx目录, "-v /opt/software/nginx/html:/opt/html"是将本地的/opt/software/nginx/html目录挂载到容器的/opt/html目录, 由于我们需要3002端口(List-2.5中设置的),所以需要映射出来.

    之后浏览器中访问3002端口, 如下图2.1所示:

                                                                          图2.1 看到的是List-2.6中index.html

    到这里,基本就结束了,我们要部署静态文件,只需要放在目录/opt/software/nginx/html下就可以了,我们不需要在host机器上安装nginx及其依赖.

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/12/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 创建名为nginx的volume
  • 2 创建容器
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档