openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
在此过程中,险些没有选项是您必须填写,除了“ Common Name”(通用名称)外,别的大部分都可以随意填写。但是Common Name必须填写您要保护的域名,我们假设域名为dev
Common Name (e.g. server FQDN or YOUR name) []: dev

末了,您会在运行命令行的文件夹下找到两个文件server.key和server.crt。
2.编写您的虚拟主机配置文件文件名称:dev.conf
<VirtualHost :443> DocumentRoot "/var/www/html/" ServerName dev SSLEngine on SSLCertificateFile "/etc/apache2/ssl/server.crt" SSLCertificateKeyFile "/etc/apache2/ssl/server.key"</VirtualHost>
/var / www / html等/是代码默认路径。/ etc / apache2中的/ SSL是我们放置证书的位置。您可以根据自己的须要进行调度。
3.将所有天生的文件放入docker镜像接下来,我们将编写Dockerfile将所有内容放入新的Docker映像中。让我们利用php:7.1.0-apache作为基本映像。以下Dockerfile的示例:
FROM php:7.1-apacheRUN apt-get update && \ apt-get install -y \ zlib1g-devCOPY server.crt /etc/apache2/ssl/server.crtCOPY server.key /etc/apache2/ssl/server.keyCOPY dev.conf /etc/apache2/sites-enabled/dev.confRUN docker-php-ext-install mysqli pdo pdo_mysql zip mbstringRUN a2enmod rewriteRUN a2enmod sslRUN service apache2 restart
以上Dockerfile 所进行的操作:
1.将密钥文件复制到/ etc/apache2/ssl中;
2.将虚拟主机配置文件(dev.conf)复制到/etc/ apache2/sites-enabled /中;
3.通过内置的安装必要的php扩展名在安装程序docker-php-ext-install
4.中启用所需的apache模块,包括rewrite和ssl。
5.重新启动apache2以使每个变动都能正常事情。
4.构建并运行您的Docker镜像docker build .
末了 我们将得到镜像版本号 例如:
68b57f0b6302
我们将容器作为我们的http做事器运行。同时支持80和443端口。
docker run -p 80:80 -p 443:443 68b57f0b6302 apache2-foreground
您可以在浏览器中检讨http:// dev和https:// dev。由于我们没有在/ var / www / html中添加任何内容。因此该当是apache2返回的缺点页面。但是我们可以看到。它正在运行。
在这里插入图片描述对付https,在访问时,我们直接在advance中选择例外即可
在这里插入图片描述现在,它可以事情了。您可以根据须要利用其他域名。只需变动虚拟主机配置文件中的相应ServerName。