Как настроить SSL-соединение для локального контейнера в Docker?

Как настроить SSL для локального сайта, работающего в Docker на Windows, чтобы можно было открывать его через HTTPS?

В моем случае установлен Docker с Apache и сайт работает через docker-compose. У меня есть белый IP, к которому привязан домен, купленный на 2domains. Я также приобрел SSL для этого домена. Я пробросил порты на моем роутере, чтобы сайт работал без SSL. Как мне настроить SSL, чтобы открывать сайт через HTTPS? 

Вот мой файл docker-compose.yml:

```yaml
version: '2.2'

services:

   dev:
    image: hidden-url
    container_name: dev
    environment:
      - APACHE_RUN_USER=#1000
      - APACHE_RUN_GROUP=#33
    volumes:
      - ./www:/app/src/www
      - ./upload:/app/src/www/upload
    ports:
        - 8085:80
        - 443:443
    networks:
        - dev

   mysql:
     container_name: mysql
     image: hidden-url
     environment:
       MYSQL_DATABASE: ***
       MYSQL_USER: ***
       MYSQL_PASSWORD: ***
       MYSQL_ROOT_PASSWORD: ***
     volumes:
         - db.slk:/var/lib/mysql
         - /etc/localtime:/etc/localtime/:ro
     expose:
         - 3306
     networks:
         - dev
     restart: always

volumes: {"db"}
networks: {"dev"}
```
  • 13 ноября 2023 г. 14:00
Ответы на вопрос 4
Для настройки SSL-соединения для вашего локального сайта, работающего в Docker на Windows, вам понадобятся следующие шаги:

1. Скопируйте файлы сертификата SSL (обычно это файлы .crt и .key) в папку, где находится ваш файл docker-compose.yml.
2. Внесите изменения в файл docker-compose.yml, чтобы добавить привязку и перенаправление порта для SSL:

```yaml
version: '2.2'

services:

   dev:
    image: hidden-url
    container_name: dev
    environment:
      - APACHE_RUN_USER=#1000
      - APACHE_RUN_GROUP=#33
    volumes:
      - ./www:/app/src/www
      - ./upload:/app/src/www/upload
      - ./certs:/etc/apache2/certs
    ports:
        - 8085:80
        - 443:443
    networks:
        - dev

   mysql:
     container_name: mysql
     image: hidden-url
     environment:
       MYSQL_DATABASE: ***
       MYSQL_USER: ***
       MYSQL_PASSWORD: ***
       MYSQL_ROOT_PASSWORD: ***
     volumes:
         - db.slk:/var/lib/mysql
         - /etc/localtime:/etc/localtime/:ro
     expose:
         - 3306
     networks:
         - dev
     restart: always

volumes:
  db:
  certs:
networks:
  dev:
```

3. Создайте новую папку с именем "certs" в той же директории, где находится файл docker-compose.yml.
4. Скопируйте файлы сертификата SSL в созданную папку "certs".
5. Откройте файл Apache-конфигурации (обычно это файл apache2.conf или httpd.conf, в зависимости от вашей установки) в контейнере Apache и настройте его для использования сертификата SSL. Здесь требуются изменения, связанные с путями к сертификатам SSL.
6. Перезапустите контейнер Apache.

Теперь ваш локальный сайт должен быть доступен через HTTPS по порту 443.
RUN  echo "    IdentityFile ~/.ssh/id_rsa" >> /etc/ssh/ssh_config 
 
mkdir -p /root/.ssh && \
    chmod 0700 /root/.ssh && \
    ssh-keyscan 192.168.10.212 >> /root/.ssh/known_hosts && \
    ssh-keyscan 192.168.10.119 >> /root/.ssh/known_hosts 
 
echo "$ssh_prv_key" > ~/.ssh/id_rsa && \
    echo "$ssh_pub_key" > ~/.ssh/id_rsa.pub && \
    chmod 600 ~/.ssh/id_rsa && \
    chmod 600 ~/.ssh/id_rsa.pub
Похожие вопросы