Docker Lamp редирект https

Я новичок в докерах. Установил докер лампу (матрейнер/лампу).

Я помещаю свой проект в /var/www/html, и когда я просматриваю проект, меня всегда перенаправляют на https.

Проблема в том, что с https localhost выдает ошибку. Однако с http проект работает.

Может ли кто-нибудь дать мне несколько предложений?

Всем спасибо за доступность.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
1 041
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец-то мне удалось получить изображение «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"]

Пользовательский файл конфигурации SSL

<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>

Создание и запуск решения

Создание образа Docker

Чтобы создать образ докера для этого приложения, вы можете перенаправить его в каталог «Lamp» (базовый каталог) и выполнить следующую команду:

docker build . -t lamp

Запуск образа Docker в контейнере Docker

Чтобы запустить только что созданный образ докера, вы можете запустить следующую команду:

docker run -p 443:443 lamp

ВАЖНОЕ ПРИМЕЧАНИЕ. Ваше приложение будет доступно только после того, как вы увидите в журналах контейнера сообщение «apache2 перешел в состояние RUNNING» и «mysqld перешел в состояние RUNNING».

Доступ к приложению

Вы должны иметь доступ к приложению по адресу «https://localhost».

ВАЖНОЕ ПРИМЕЧАНИЕ. При первом доступе вы увидите предупреждение «Ваше соединение не защищено», вы можете нажать «Дополнительно», а также нажать «Перейти к https://localhost».

Большое спасибо JasonS, теперь работает нормально! Большой!

Giammo 20.12.2020 16:26

Не беспокойся! Рад, что смог помочь :)

JasonS 20.12.2020 18:44

Другие вопросы по теме