zenepay / https-local-docker
具有nginx、mariadb、phpmyadmin和SSL证书的本地开发环境
1.0.0
2024-09-21 04:55 UTC
Requires
- ryoluo/sail-ssl: ^1.3
README
安装
git clone https://github.com/zenepay/https-localhost-docker.git sail_share
cd sail_share
这将为以下内容创建3个Docker镜像
- nginx用于路由URL,例如project1.dev.localhost,其中project1运行在其他端口上,例如8801
- mariadb数据库端口3306
- 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