zenepay/https-local-docker

具有nginx、mariadb、phpmyadmin和SSL证书的本地开发环境

安装: 0

依赖项: 0

建议者: 0

安全性: 0

星星: 15

关注者: 1

分支: 1

开放问题: 0

语言:Shell

类型:项目

1.0.0 2024-09-21 04:55 UTC

This package is auto-updated.

Last update: 2024-09-27 16:40:42 UTC


README

安装

git clone https://github.com/zenepay/https-localhost-docker.git sail_share
cd sail_share

这将为以下内容创建3个Docker镜像

  1. nginx用于路由URL,例如project1.dev.localhost,其中project1运行在其他端口上,例如8801
  2. mariadb数据库端口3306
  3. phpmyadmin管理mariadb端口:8890

在localhost上设置SSL

步骤1:生成CA证书

mkdir nginx-certs
cd nginx-certs
openssl genrsa -out ca.key -des3 2048
openssl req -x509 -sha256 -new -nodes -days 3650 -key ca.key -out ca.pem
cd ..

步骤2:生成由我们的CA签名的证书

我们已经有resources/localhost.ext文件,如果尚未存在,请使用此文件

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = @alt_names
[req]
req_extensions = req_ext
[req_distinguished_name]
commonName_default = localhost
[req_ext]
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.dev.localhost
DNS.2 = dev.localhost
DNS.3 = localhost

现在使用以下命令生成localhost.key文件

生成一个私钥

选择一个简单的密码短语,例如NginXpass作为您的密钥。输入它,再次输入。您仍在资源文件夹中

openssl genrsa -out localhost.key -des3 2048

-使用密钥生成证书签名请求。-输入您为密钥选择的密码短语(例如NginXpass)。-选择默认值或根据需要输入信息。对于“挑战密码”,无需担心输入任何内容

openssl req -new -key localhost.key -out localhost.csr

使用步骤1中CA密钥选择的密码短语。

openssl x509 -req -in localhost.csr -CA ca.pem -CAkey ca.key \
-CAcreateserial -days 3650 -sha256 \
-extfile ../resources/localhost.ext -out localhost.crt

使用为localhost密钥选择的密码短语,例如NginXpass,它与CA密钥不同。

openssl rsa -in localhost.key -out localhost.decrypted.key

步骤3:将CA证书导入浏览器

在浏览器Chrome中输入url:chrome://settings/certificates 点击导入,然后浏览到nginx-certs/ca.pem 点击“信任此证书以识别网站”的框,然后点击“确定”

步骤4:在hosts文件中设置主机的IP地址

C:\Windows\System32\drivers\etc\hosts 例如

127.0.0.1 kubernetes.docker.internal localhost mariadb dev.localhost *.dev.localhost

192.168.1.111 host.docker.internal
192.168.1.111 gateway.docker.internal

步骤5:编辑global.pass

更改您的文件/nginx/keys/global.pass,例如NginXpass,通过输入上面创建的密钥的密码短语

步骤6:编辑default.conf.template

将server_name更改为子域,您想要更改端口到Docker镜像运行的端口,例如端口8000 proxy_pass http://host.docker.internal:8000;

server {
    listen  443 ssl;
    server_name subdomain.dev.localhost;

    # Self signed certificates
    # Don't use them in a production server!
    ssl_certificate     /etc/nginx/certs/localhost.crt;
    ssl_certificate_key /etc/nginx/certs/localhost.key;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass	http://host.docker.internal:8000;
    }
}

步骤7:将您的Docker项目的网络设置为相同

编辑您的Docker项目的docker-compose.yml(不是此项目),必须具有network zen-network和external: true,如下所示

networks:
    sail:
        driver: bridge
        name: zen-network
        external: true

步骤8:使用Docker Compose创建

创建.env文件

cd ..
mv .env.example .env
mkdir mariadb

现在打开Docker Desktop以启动服务,之后运行以下命令以构建镜像

docker compose up