docker配置Nginx

  1. 准备工作

  2. 使用docker 下载nginx 镜像

  3. 启动nginx

  4. 前端该如何用docker做什么

准备工作

windows Mac:直接去下载可视化工具 https://www.docker.com/products/docker-desktop

centos7 yum install docker-io -y

腾讯云 https://cloud.tencent.com/document/product/1207/45596

使用docker下载nginx镜像

docker pull nginx

如果网速慢的话 注意更换 docker源

依次执行以下命令

echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker
systemctl daemon-reload
service docker restart

启动nginx

docker run --name nginx -p 80:80 -d nginx

这样就简单的把nginx启动了,但是我们想要改变配置文件nginx.conf ,进入容器,命令:

docker exec -it nginx bash

nginx.conf配置文件在 /etc/nginx/ 下面,但是你使用 vim nginx.conf 或者 vi nginx.conf

会发现vi或者vim命令没有用,解决办法:apt-get update 完成之后 apt-get install vim

此时你就可以自己定制nginx.con文件了,改好配置文件之后重启容器,步骤,先把容器停了

docker stop nginx 然后重启 docker start nginx

这样不是很方便,还有第二种方式,挂载配置文件,就是把装有docker宿主机上面的nginx.conf配置文件映射到启动的nginx容器里面,这需要你首先准备好nginx.con配置文件,如果你应经准备好了,下一步是启动nginx

docker run --name nginx -p 80:80 -v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/docker-nginx/log:/var/log/nginx -v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx

解释下上面的命令:

--rm 容器终止运行后,自动删除容器文件

--name 给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器

-p 映射端口,将docker宿主机的80端口和容器的80端口进行绑定

-v 挂载文件用的,第一个-v 表示将你本地的nginx.conf覆盖你要起启动的容器的nginx.conf文件,第二个表示将日志文件进行挂载,就是把nginx服务器的日志写到你docker宿主机的/home/docker-nginx/log/下面第三个-v 表示的和第一个-v意思一样的。

-d 表示启动的是哪个镜像

我个人更喜欢第二种映射的方式,麻烦的是需要自己准备好nginx.conf 和default.conf文件,我是直接从容器里面复制的,然后根据自己的需要改的

前端该如何用docker做什么

通常前端 npm run build 之后生成dist文件 会把文件上传通过ftp或者后台人员上传到服务器 但如果服务器支持docker部署的话 就能非常方便的部署应用了

dockFile 是类似shell脚本的 docker构建文件

# 设置基础镜像
FROM nginx
# 定义作者
MAINTAINER lanbo
# 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面
COPY dist/  /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/nginx.conf
RUN echo 'echo init ok!!'

nginx.conf 如果根据实际情况配置

打包镜像

当前目录下运行:docker build -t nginx-test .

后面的 . 不能省

运行容器

docker run --name nginx-docker -p 80:80 -d nginx-test

浏览器输入localhost就可以访问了前端页面了

以上操作是服务器完成 或者本地制作好的镜像上传到服务器启动也行

当然更高级是使用 jekins 集成自动获取代码 自动打包 自动上传

参考 jekins部署docker

感谢

https://hub.daocloud.io