当前位置:   article > 正文

Docker 搭建本地 https 环境_docker部署ssl服务

docker部署ssl服务


环境:

安装 Docker

安装 docker-compose

1. 生成自签名的SSL证书和私钥

首先,生成自签名的 SSL 证书和私钥。可以使用 OpenSSL 命令来生成

hostnamectl set-hostname httpshost
su
echo "192.168.23.5 www.httpshost.com" >> /etc/hosts

mkdir /opt/nginx
cd /opt/nginx
# 上传 nginx-1.22.0.tar.gz 安装包
rz -E

# 生成本地SSL证书及密钥文件
openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这个命令将会生成一个私钥文件 key.pem 和一个证书文件 certificate.pem

解释一下命令的参数:

  • req:执行证书请求相关操作。
  • -newkey rsa:2048:生成一个新的 RSA 密钥对,密钥长度为 2048 bits。
  • -nodes:私钥不进行加密,这样在使用证书时不需要输入密码。
  • -keyout key.pem:指定生成的私钥文件名为 key.pem
  • -x509:生成自签名的证书。
  • -days 365:证书有效期为 365 天。
  • -out certificate.pem:指定生成的证书文件名为 certificate.pem

image-20230828132226687

2. 编辑 Nginx 的 Dockerfile 文件

vim /opt/nginx/Dockerfile

# 基于基础镜像
FROM centos:7

# 维护者信息
MAINTAINER this is nginx image <mz>

# 添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make openssl openssl-devel

# 创建nginx管理用户
RUN useradd -M -s /sbin/nologin nginx

# 上传 nginx 软件压缩包,并解压
ADD nginx-1.22.0.tar.gz /usr/local/src/

# 指定工作目录
WORKDIR /usr/local/src/nginx-1.22.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module

# 编译及安装
RUN make && make install

# 环境变量
ENV PATH /usr/local/nginx/sbin:$PATH

# 指定 http 和 https 端口
#EXPOSE 80
EXPOSE 443

# 容器运行时执行命令
ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

image-20230828133011740

3. 编辑 YAML 文件

编辑 docker-compose.yml 文件:

vim /opt/nginx/docker-compose.yml

# 指定docker-compose版本为3
version: '3'

services:
  # 定义一个名为 nginx 的服务
  nginx:
    # 设置容器名称为 nginx
    container_name: nginx
    # 设置主机名为 nginx
    hostname: nginx
    # 构建镜像
    build:
      # 设置上下文路径为 ./nginx,及Dockerfile所在目录
      context: ./
      # 指定 Dockerfile 文件名为 Dockerfile
      dockerfile: Dockerfile
    # 端口映射
    ports:
      # 将主机的 80 端口映射到容器的 80 端口
      #- 80:80
      # 将主机的 443 端口映射到容器的 443 端口
      - 443:443
    # 网络设置
    networks:
      # 连接到名为 mynet 的网络
      mynet:
        # 指定容器的ip地址为 172.18.0.10
        ipv4_address: 172.18.0.10
    # 卷挂载
    volumes:
      # 将主机的 ./html 目录挂载到容器的 /usr/local/nginx/html 的目录
      - ./nginx.conf:/usr/local/nginx/conf/nginx.conf
      - ./html:/usr/local/nginx/html
      - ./key.pem:/usr/local/nginx/ssl/key.pem
      - ./certificate.pem:/usr/local/nginx/ssl/certificate.pem


# 网络定义
networks:
  # 定义名为 mynet 的网络
  mynet:
    # 使用 bridge 网络驱动
    driver: bridge
    # IP 地址管理
    ipam:
      # 配置 IP 地址
      config:
        # 设置子网为 172.18.0.0/16
        - subnet: 172.18.0.0/16


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

image-20230828133209059

4. 准备 nginx 主配置文件

在与 docker-compose.yml 文件相同的目录中创建一个名为 nginx.conf 的配置文件,并添加以下内容:

vim nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       443 ssl;
        ssl_certificate /usr/local/nginx/ssl/certificate.pem;
        ssl_certificate_key /usr/local/nginx/ssl/key.pem;

        server_name  httpshost;
        charset utf-8;
        location / {
            root   html;
            index  index.html index.php;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

image-20230828133340832

5. 运行以下命令启动容器

docker-compose -f docker-compose.yml up -d
  • 1

image-20230828133743355

image-20230828134455411

6. 添加网页主页

echo "this is https test" > html/index.html
  • 1

在这里插入图片描述

7. 测试

现在,您的本地 Docker 环境已经搭建好了 HTTPS。您可以通过访问 https://www.httpshost.com 来测试您的应用程序。请注意,由于使用的是自签名证书,您可能会收到浏览器的安全警告。

image-20230828135545704

image-20230828135620026

image-20230828135706377

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/302177
推荐阅读
相关标签
  

闽ICP备14008679号