更好的阅读体验:点这里 ( www.doubibiji.com
)
12 常用容器部署-Nginx
下面介绍一下常用容器的部署。可以先简单了解下,用到再来详细查看。
在 Docker 中部署 Nginx,并通过挂载方式将 Nginx 的配置文件和站点目录挂载到宿主机上。
12.1 下载镜像
docker pull nginx
默认下载的就是最新的镜像文件。
12.2 创建挂载目录
在宿主机上创建挂载目录,自己自定义放在哪里。
# 配置文件目录
mkdir -p /home/doubi/docker_dir/nginx/conf
# 站点目录
mkdir -p /home/doubi/docker_dir/nginx/html
# nginx日志目录
mkdir -p /home/doubi/docker_dir/nginx/log
# 递归赋予文件夹读写执行权限
chmod -R 777 /home/doubi/docker_dir/nginx
12.3 复制配置文件
如果我们此时使用如下指令直接运行容器会存在一个问题。
docker run -d -p 8080:8080 --name nginx --restart=always \
-v /home/doubi/docker_dir/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/doubi/docker_dir/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/doubi/docker_dir/nginx/log:/var/log/nginx \
-v /home/doubi/docker_dir/nginx/html:/usr/share/nginx/html \
nginx
宿主机不存在不存在 nginx.conf 文件,会把 /home/doubi/docker_dir/nginx/conf/nginx.conf
当成文件夹来处理,那么把宿主机的 /home/doubi/docker_dir/nginx/conf/nginx.conf
文件夹映射到容器的 /etc/nginx/nginx.conf
就会报错。
怎么处理呢?
我们首先通过 nginx 镜像运行一个简单的容器,将简单的容器中的配置文件复制到宿主机中,然后删除简单的容器,重新使用上面的命令运行我们的容器。
运行一个简单的容器
# 启动容器
docker run --name nginx -p 8080:80 -d nginx
复制配置文件到宿主机
# 将容器中nginx.conf文件复制到宿主机的挂载目录中
docker cp nginx:/etc/nginx/nginx.conf /home/doubi/docker_dir/nginx/conf/nginx.conf
# 将容器中conf.d文件夹下内容复制到宿主机的挂载目录中
docker cp nginx:/etc/nginx/conf.d /home/doubi/docker_dir/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机的挂载目录中,后面没有html
docker cp nginx:/usr/share/nginx/html /home/doubi/docker_dir/nginx
删除简单的容器
docker rm -f nginx
12.4 运行容器
现在有配置文件了,可以运行容器,并进行挂载了:
docker run -d -p 8080:80 --name nginx --restart=always \
-v /home/doubi/docker_dir/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/doubi/docker_dir/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/doubi/docker_dir/nginx/log:/var/log/nginx \
-v /home/doubi/docker_dir/nginx/html:/usr/share/nginx/html \
nginx
参数说明:
- -d:后台运行
- -p: 端口映射(宿主机端口:容器端口),nginx配置文件中默认使用的是80端口,所以容器的端口使用的是80,除非修改配置文件。
- –name 创建容器的名称
- –restart=always 容器停止后自动重启
- -v 目录挂载(宿主机目录:容器目录)
- 最后的nginx表示镜像的名称
12.5 访问首页
现在通过 http://IP:8080
就可以访问了。
12.6 部署vue项目
首先将 vue 项目中打包生成 dist 文件夹中的内容,全部拷贝到与nginx的html相映射的文件夹中,然后重启docker内的 nginx。
或者将 dist 解压到 html 文件夹,然后修改 conf.d 文件夹中的 default.config 文件,修改根目录映射 html 下的 dist。
location / {
root /usr/share/nginx/html/dist;
try_files $uri $uri/ /index.html;
}