Я новичок в докерах. Установил докер лампу (матрейнер/лампу).
Я помещаю свой проект в /var/www/html, и когда я просматриваю проект, меня всегда перенаправляют на https.
Проблема в том, что с https localhost выдает ошибку. Однако с http проект работает.
Может ли кто-нибудь дать мне несколько предложений?
Всем спасибо за доступность.


Наконец-то мне удалось получить изображение «mattrayner/lamp:latest-1804», работающее локально на HTTPS с использованием самозаверяющего сертификата,
Я не думаю, что это подходит для производства, конечно (поскольку оно самоподписано, и вы, вероятно, будете использовать файл для создания докеров), но это позволяет локальную разработку на HTTPS для приложения,
Вот основные детали, чтобы заставить его работать на вашем конце:
Структура каталогов решения выглядит следующим образом:
Lamp
│ Dockerfile
│
└───app
│ │ index.php
│
└───certs
│ │ docker.crt
│ | docker.key
│ | key.pem
└───ssl
│ │ custom-ssl.conf
FROM mattrayner/lamp:latest-1804
# Copy self-signed certificate onto ssl cert directory in docker container
COPY certs/docker.crt certs/docker.key /etc/ssl/certs/
# Copy custom ssl config file to apache virtual sites directory in docker container
COPY ssl/custom-ssl.conf /etc/apache2/sites-available/custom-ssl.conf
# Enable SSL, enable custom site and restart apache server
RUN a2enmod ssl && a2ensite custom-ssl.conf && service apache2 restart
# Copy application directory (containing index.php)
COPY /app .
# Set 'run.sh' as default command for docker container
CMD ["/run.sh"]
<VirtualHost *:443>
# Directory where webpages are stored
DocumentRoot "/var/www/html"
# Name of your server (could be a domain name)
ServerName localhost
# Switch on SSL
SSLEngine on
# Paths to Self-Signed certificate and key
SSLCertificateFile /etc/ssl/certs/docker.crt
SSLCertificateKeyFile /etc/ssl/certs/docker.key
</VirtualHost>
Вы можете перенаправить в каталог «certs» и сгенерировать самозаверяющий сертификат, используя следующую команду:
openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout docker.key -out docker.crt
Мое приложение состояло только из файла index.php в каталоге app. Содержимое файла index.php следующее:
<?php
$db = new PDO('mysql:host=localhost', 'root', null);
function getOSInformation()
{
if (false == function_exists("shell_exec") || false == is_readable("/etc/os-release")) {
return null;
}
$os = shell_exec('cat /etc/os-release');
$listIds = preg_match_all('/.*=/', $os, $matchListIds);
$listIds = $matchListIds[0];
$listVal = preg_match_all('/=.*/', $os, $matchListVal);
$listVal = $matchListVal[0];
array_walk($listIds, function(&$v, $k){
$v = strtolower(str_replace('=', '', $v));
});
array_walk($listVal, function(&$v, $k){
$v = preg_replace('/=|"/', '', $v);
});
return array_combine($listIds, $listVal);
}
$osInfo = getOSInformation();
?>
<!doctype html>
<html lang=en>
<head>
<meta charset=utf-8>
<title>Hello World from Docker-LAMP</title>
<style>
@import 'https://fonts.googleapis.com/css?family=Montserrat|Raleway|Source+Code+Pro';
body { font-family: 'Raleway', sans-serif; }
h2 { font-family: 'Montserrat', sans-serif; }
pre {
font-family: 'Source Code Pro', monospace;
padding: 16px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
background-color: #f7f7f7;
border-radius: 3px;
word-wrap: normal;
}
.container {
max-width: 1024px;
width: 100%;
margin: 0 auto;
}
</style>
</head>
<body>
<div class = "container">
<header>
<img src = "https://cdn.rawgit.com/mattrayner/docker-lamp/831976c022782e592b7e2758464b2a9efe3da042/docs/logo.svg" alt = "Docker LAMP logo" />
<h2>Welcome to <a href = "https://github.com/mattrayner/docker-lamp" target = "_blank">Docker-Lamp</a> a.k.a mattrayner/lamp</h2>
</header>
<article>
<p>
For documentation, <a href = "https://github.com/mattrayner/docker-lamp" target = "_blank">click here</a>.
</p>
</article>
<section>
<pre>
OS: <?php echo $osInfo['pretty_name']; ?><br/>
Apache: <?php echo apache_get_version(); ?><br/>
MySQL Version: <?php echo $db->getAttribute( PDO::ATTR_SERVER_VERSION ); ?><br/>
PHP Version: <?php echo phpversion(); ?><br/>
phpMyAdmin Version: <?php echo getenv('PHPMYADMIN_VERSION'); ?>
</pre>
</section>
</div>
</body>
</html>
Чтобы создать образ докера для этого приложения, вы можете перенаправить его в каталог «Lamp» (базовый каталог) и выполнить следующую команду:
docker build . -t lamp
Чтобы запустить только что созданный образ докера, вы можете запустить следующую команду:
docker run -p 443:443 lamp
ВАЖНОЕ ПРИМЕЧАНИЕ. Ваше приложение будет доступно только после того, как вы увидите в журналах контейнера сообщение «apache2 перешел в состояние RUNNING» и «mysqld перешел в состояние RUNNING».
Вы должны иметь доступ к приложению по адресу «https://localhost».
ВАЖНОЕ ПРИМЕЧАНИЕ. При первом доступе вы увидите предупреждение «Ваше соединение не защищено», вы можете нажать «Дополнительно», а также нажать «Перейти к https://localhost».
Не беспокойся! Рад, что смог помочь :)
Большое спасибо JasonS, теперь работает нормально! Большой!