一、基于 apline + nginx1.8 构建基础镜像

项目结构

image.png

Dockerfile 文件内容

  1. FROM alpine:latest
  2. MAINTAINER ZHIXING@xxx.com
  3. LABEL version="v1"
  4. ## 工作目录
  5. WORKDIR /usr/local/nginx/
  6. ## 更换 alpine 源为 aliyun
  7. RUN echo http://mirrors.aliyun.com/alpine/v3.11/main > /etc/apk/repositories && \
  8. echo http://mirrors.aliyun.com/alpine/v3.11/community >> /etc/apk/repositories
  9. RUN apk update && apk upgrade
  10. ## 安装 ngxin依赖
  11. RUN apk add iotop gcc libgcc libc-dev libcurl libc-utils pcre-dev zlib-dev libnfs make pcre pcre2 zip unzip net-tools pstree wget libevent libevent-dev iproute2 openssl openssl-dev
  12. ## 添加 nginx源码
  13. Add nginx-1.18.0.tar.gz /usr/local/nginx/
  14. ## 编译 nginx 源码(配置ssl模块)
  15. RUN cd /usr/local/nginx/nginx-1.18.0 \
  16. && ./configure --prefix=/usr/local/nginx --with-http_ssl_module && make && make install
  17. ## 时区
  18. ENV TZ='CST-8'
  19. ## 开放 80 端口
  20. EXPOSE 80 443
  21. ENTRYPOINT ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
  22. #CMD ["-g","daemon off;"]
  23. #CMD ["nginx"]

容器中重要的路径

  • /usr/local/nginx/ :Nginx 根路径
  • /usr/local/nginx/sbin/nginx : nginx 启动脚本
  • /usr/local/nginx/logs/ :Nginx 日志存放目录
  • /usr/local/nginx/conf/nginx.conf : Nginx 配置文件
  • /usr/local/nginx/conf/cert/ : Nginx ssl 证书存放路径(可以自定义)
  • /usr/local/nginx/conf/vhost/ : Nginx 配置文件存放路径
  • /usr/local/nginx/html/ : 静态资源存放路径i

二、docker-compose 案例

  1. version: '2'
  2. # nginx
  3. singleNginx:
  4. image: nginx-1-18-customer:v1 ## 镜像
  5. #build: .
  6. container_name: nginx_1_18
  7. privileged: true
  8. ports:
  9. - "80:80"
  10. - "443:443"
  11. volumes:
  12. - ./data/nginx/logs/:/usr/local/nginx/logs/ ## 日志
  13. - ./volumn-data/nginx/nginx.conf:/usr/local/nginx/conf/nginx.conf ## 配置文件
  14. - ./volumn-data/nginx/cert/:/usr/local/nginx/conf/cert/ ## 证书
  15. - ./volumn-data/nginx/vhost/:/usr/local/nginx/conf/vhost/ ## 配置文件
  16. - ./volumn-data/nginx/html/:/usr/local/nginx/html/ ## html
  17. - ./data/cw_manager_application/upload/:/home/upload/ ## 静态资源
  18. restart: always