docker之nginx

 

 

使用docker虚拟化nginx服务

项目结构

首先需要编写Dockerfile文件,一般情况下有2种做法:

第一种基于liunx镜像镜像编写(自由度非常高)
第二种基于docker官方镜像仓库的镜像编写

如何选择用何种方式编写自己的Dockerfile呢?先去看你要虚拟化的组件 官方提供的镜像dockerfile源码,如果官方提供的非常累赘那就建议使用第一种方式编写自己的镜像

现在nginx使用官方docker镜像编写流程:

1、创建Dockerfile文件

FROM nginx:1.8  ##拉取官方镜像库nginx镜像 1.8版本
COPY nginx/cert /etc/nginx/cert ## 将本地的nginx文件夹下的cert文件夹复制nginx的cert目录(不存在会创建)
COPY nginx/nginx.conf /etc/nginx/nginx.conf ##将nginx的配置文件 复制到nginx配置文件所在位置(会覆盖原有的文件)
VOLUME ["/data"]  ## 在镜像的根目录下创建一个data目录  也可以直接在这里指定所需要映射到宿主机上的文件目录

2、创建docker-compose.yml文件

nginx:
  container_name: nginx  ##容器名称为nginx
  build: docker  ## 指定编译文件dockerfile的位置
  restart: always  ##开机自动启动
  ports: ##端口暴露
    - "80:80"  ##宿主机端口:容器内端口
    - "443:443"
  environment:
      TZ : "Asia/Shanghai" ##指定容器时区
  volumes:
    - /root/data/nginx:/data  ##将dockerfile第4步中创建的data文件夹映射到宿主机文件夹下(在这里映射是方便更改,如果在dockerfile中指定会导致当前yml文件依赖的镜像配置灵活度不够高)

这样配置完成 cd 到当前docker-compose.yml文件所在目录 执行 docker-compose up  -d  就可以启动了

注意容器挂载卷千万不要删除宿主机上已经挂在在容器中的目录,否则容器会丢失资源。另外,在虚拟化某些服务的时候会因为文件系统权限不一致导致容器读写出现问题,这个后面再讲,nginx是不会有这个问题的

nginx.sh 是一个快速操作nginx重启及nginx配置、ssl证书等功能的脚本,这个随便写写就ok了,

附上nginx.sh脚本
#!/usr/bin/env bash
# !/bin/sh
set -m
DOCKER_NAME="nginx"
WAR_PATH="docker/nginx"
function cp_app() {
    docker cp ${WAR_PATH}/nginx.conf ${DOCKER_NAME}:/etc/nginx/nginx.conf
    docker cp ${WAR_PATH}/cert ${DOCKER_NAME}://etc/nginx
}
function restart_app() {
    docker restart ${DOCKER_NAME}
}
function start_app() {
    docker start ${DOCKER_NAME}
}
function stop_app() {
    docker stop ${DOCKER_NAME}
}

case $1 in
start)
       cp_app
       start_app
   ;;
 restart)
       cp_app
       restart_app
   ;;
 stop)
       stop_app
   ;;
*)
       echo "Usage: $0 {start |restart |stop}" >&2
esac
欢迎关注我的个人公众号
欢迎关注我的个人公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值