在 Docker 中启用 Prestashop SSL 以进行本地开发

Enabling Prestashop SSL in Docker for local development

提问人:Kacper P 提问时间:11/11/2023 更新时间:11/11/2023 访问量:35

问:

我现在正在处理一个项目,我需要使用 docker 在我的计算机上本地创建一个 prestashop 站点,但我无法启用 ssl,并且不断收到ERR_SSL_PROTOCOL_ERROR错误。

到目前为止,我已经编写了这样的文件: docker-compose:

version: '3'

services:
  prestashop:
    build: .
    container_name: prestashop
    ports:
      - 8080:80
      - 4343:443
    volumes:
     - /home/puda/BE/src:/var/www/html
    environment:
      - DB_SERVER=mysql
      - DB_USER=root
      - DB_PASSWD=admin
      - DB_NAME=prestashop
      - PS_ENABLE_SSL=1
      - PS_SSL_ENABLED=true
    networks:
      - prestashop-net
  mysql:
    image: mysql:5.7
    container_name: mysqlPresta
    volumes:
     - /home/puda/BE/sql:/var/lib/mysql
    environment:
      - PS_INSTALL_AUTO=0
      - MYSQL_ROOT_PASSWORD=admin
      - MYSQL_DATABASE=prestashop
    ports:
      - 3306:3306
    networks:
      - prestashop-net
networks:
  prestashop-net:

Docker文件:

FROM prestashop/prestashop:1.7.8

ENV PS_VERSION 1.7.8
ENV PS_ENABLE_SSL 1
ENV PS_SSL_ENABLED true

COPY ssl.crt /../../../etc/apache2/ssl/ssl.crt
COPY ssl.key /../../../etc/apache2/ssl/ssl.key
COPY default-ssl.conf /../../../etc/apache2/sites-available/default-ssl.conf

RUN mkdir -p /var/run/apache2/
RUN ln -s /etc/apache2/mods-available/ssl.load  /etc/apache2/mods-enabled/ssl.load

RUN if [ -x "$(command -v apache2-foreground)" ]; then a2enmod ssl;fi

EXPOSE 443

default-ssl.conf:

<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerAdmin webmaster@localhost

                DocumentRoot /var/www/html

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
                SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/ssl.crt
        SSLCertificateKeyFile /etc/apache2/ssl/ssl.key

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>

        </VirtualHost>
</IfModule>

我不知道代码有多正确,但这就是我所拥有的。我检查了所有文件都在 docker 容器中,密钥和证书是正确的,因为我也检查了。我不知道我能做些什么来让网站支持 ssl。

当我在prestashop网站安装过程中检查启用ssl选项时,我根本无法访问该网站。当我在安装过程中不选中此选项时,我可以访问该站点,但是在管理面板中,我也无法启用 ssl,因为我收到错误ERR_SSL_PROTOCOL_ERROR。我尝试禁用防火墙并清除 cookie,但它也不起作用。在不同的浏览器上相同,但在 FireFox 上,SSL_ERROR_RX_RECORD_TOO_LONG错误弹出一次

docker apache ssl docker-compose prestashop-1.7

评论


答: 暂无答案