服務(wù)器環(huán)境: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、創(chuàng)建nginx容器
創(chuàng)建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 將主機(jī)8080端口映射到容器nginx的80端口
-v /data/docker_v/nginx/www:/home/www 將主機(jī)/data/docker_v/nginx/www目錄映射到容器/home/www目錄。這里/home/www是后面nginx配置文件中我們要指定的存放靜態(tài)文件的位置,映射到主機(jī)目錄后,直接將靜態(tài)文件放到主機(jī)目錄即可。
-d 后臺(tái)啟動(dòng)
nginx 創(chuàng)建容器使用的鏡像及版本
查看創(chuàng)建好的容器實(shí)例:
[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配置文件掛載到主機(jī)
進(jìn)入nginx容器內(nèi)部:
[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的默認(rèn)配置文件為nginx.conf,但是我們不建議將個(gè)性化配置直接放在此文件中,而是在conf.d目錄下創(chuàng)建*.conf文件,將配置信息放在這里。
我們看到conf.d下已經(jīng)有一個(gè)default.conf文件,我們直接基于此文件進(jìn)行配置。
為了配置管理方便,我們將conf.d目錄下的配置文件直接映射到主機(jī)目錄。
先將default.conf從容器拷貝到主機(jī):
[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 主機(jī)配置文件位置
刪除之前創(chuàng)建的容器,在之前的命令中加入
-v /data/docker_v/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf,重新創(chuàng)建容器:
[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的配置文件,靜態(tài)文件目錄都映射到了主機(jī),下面我們直接去配置nginx。
4、配置nginx
打開主機(jī)上的nginx配置文件/data/docker_v/nginx/conf.d/default.conf,配置靜態(tài)文件目錄:
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即可。這個(gè)/home/www是容器中存放靜態(tài)文件的地址,沒有的話先創(chuàng)建。
前面我們創(chuàng)建容器的時(shí)候已將/home/www映射到主機(jī)目錄/data/docker_v/nginx/www,后續(xù)我們操作靜態(tài)文件只需在此主機(jī)目錄下即可。
重啟nginx容器,我們?cè)谥鳈C(jī)/data/docker_v/nginx/www目錄下放一張1.png的圖片,然后瀏覽器訪問這個(gè)圖片,看是否配置成功。
瀏覽器上輸入地址:http://192.168.2.130:8080/1.png,能看到說明配置成功。
5、題外話
這里稍微提一下nginx文件服務(wù)搭建好后,怎么跟tomcat結(jié)合提供文件上傳、下載、瀏覽服務(wù)。
docker容器環(huán)境中,tomcat也是一個(gè)單獨(dú)的容器,文件經(jīng)瀏覽器上傳后保存在tomcat的容器中,nginx在另外一個(gè)容器中,并不能直接訪問到。
只要我們能讓tomcat上傳下載目錄和nginx的靜態(tài)文件目錄在同一個(gè)目錄位置,就能實(shí)現(xiàn)。
怎么實(shí)現(xiàn)?
直接將兩個(gè)容器操作的目錄掛載到同一個(gè)主機(jī)目錄就行了,是不是很簡(jiǎn)單。
好了,關(guān)于nginx文件服務(wù)器搭建就介紹到這里,后面我會(huì)將更到項(xiàng)目中的相關(guān)技術(shù)分享給大家,一起交流探討。