服务器环境:centos7.5+,docker19.03.6
1、拉取nginx镜像
搜索nginx镜像:
[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 12749 [OK]
拉取nginx镜像:
[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker pull nginx
这里我们不指定版本,直接拉取最新的latest
查看已拉取的镜像:
[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest a1523e859360 7 days ago 127MB
2、创建nginx容器
创建nginx容器:
[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker run --name nginx -p 8080:80 -v /data/docker_v/nginx/www:/home/www -d nginx
其中:
--name nginx 容器的名称为nginx
-p 8080:80 将主机8080端口映射到容器nginx的80端口
-v /data/docker_v/nginx/www:/home/www 将主机/data/docker_v/nginx/www目录映射到容器/home/www目录。这里/home/www是后面nginx配置文件中我们要指定的存放静态文件的位置,映射到主机目录后,直接将静态文件放到主机目录即可。
-d 后台启动
nginx 创建容器使用的镜像及版本
查看创建好的容器实例:
[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
1dae5d2ffa61 nginx "nginx -g 'daemon of…" 6 days ago Up 6 days 0.0.0.0:8080->80/tcp nginx
安装成功,浏览器输入地址:http://192.168.2.130:8080/,可以看到nginx版本信息。
3、nginx配置文件挂载到主机
进入nginx容器内部:
[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker exec -it nginx bash
root@1dae5d2ffa61:/# cd /etc/nginx/
root@1dae5d2ffa61:/etc/nginx# ls
conf.d fastcgi_params koi-utf koi-win mime.types modules nginx.conf scgi_params uwsgi_params win-utf
root@1dae5d2ffa61:/etc/nginx# cd conf.d/
root@1dae5d2ffa61:/etc/nginx/conf.d# ls
default.conf
我们看到nginx的默认配置文件为nginx.conf,但是我们不建议将个性化配置直接放在此文件中,而是在conf.d目录下创建*.conf文件,将配置信息放在这里。
我们看到conf.d下已经有一个default.conf文件,我们直接基于此文件进行配置。
为了配置管理方便,我们将conf.d目录下的配置文件直接映射到主机目录。
先将default.conf从容器拷贝到主机:
[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker cp 1dae5d2ffa61:/etc/nginx/conf.d/default.conf /data/docker_v/nginx/conf.d/default.conf
1dae5d2ffa61 容器id
/data/docker_v/nginx/conf.d/default.conf 主机配置文件位置
删除之前创建的容器,在之前的命令中加入
-v /data/docker_v/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf,重新创建容器:
[root@iZbp13sno1lc2yxlhjc4b3Z ~]# docker run --name nginx -p 8080:80 -v /data/docker_v/nginx/www:/home/www -v /data/docker_v/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
到此,nginx的配置文件,静态文件目录都映射到了主机,下面我们直接去配置nginx。
4、配置nginx
打开主机上的nginx配置文件/data/docker_v/nginx/conf.d/default.conf,配置静态文件目录:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
#root /usr/share/nginx/html;
root /home/www;
index index.html index.htm;
}
将location下的root后面地址修改为/home/www即可。这个/home/www是容器中存放静态文件的地址,没有的话先创建。
前面我们创建容器的时候已将/home/www映射到主机目录/data/docker_v/nginx/www,后续我们操作静态文件只需在此主机目录下即可。
重启nginx容器,我们在主机/data/docker_v/nginx/www目录下放一张1.png的图片,然后浏览器访问这个图片,看是否配置成功。
浏览器上输入地址:http://192.168.2.130:8080/1.png,能看到说明配置成功。
5、题外话
这里稍微提一下nginx文件服务搭建好后,怎么跟tomcat结合提供文件上传、下载、浏览服务。
docker容器环境中,tomcat也是一个单独的容器,文件经浏览器上传后保存在tomcat的容器中,nginx在另外一个容器中,并不能直接访问到。
只要我们能让tomcat上传下载目录和nginx的静态文件目录在同一个目录位置,就能实现。
怎么实现?
直接将两个容器操作的目录挂载到同一个主机目录就行了,是不是很简单。
好了,关于nginx文件服务器搭建就介绍到这里,后面我会将更到项目中的相关技术分享给大家,一起交流探讨。
网友评论