Ужасная медленная настройка PHP на Windows - PullRequest
0 голосов
/ 11 июня 2018

Я запускаю Docker для Windows с Hyper-V, 4 ядрами и 8 ГБ ОЗУ, но загрузка страниц моего PHP-проекта составляет порядка 40 секунд на страницу.

В моей установке используются самозаверяющие сертификаты, но ядумаю, что проблема связана с чем-то другим.

Во время сборки Docker я получаю следующее предупреждение:

---> Запуск в 46329f96a79f Перезапуск веб-сервера Apache httpd: apache2 [MonИюн 11 09: 17: 26.151516 2018] [ssl: warn] [pid 23] AH01906: localhost: 443: 0 сертификат сервера является сертификатом CA (BasicConstraints: CA == TRUE!?) [Пн, 11 июня 09: 17: 26.1516052018] [ssl: warn] [pid 23] AH01909: localhost: 443: 0 сертификат сервера НЕ содержит идентификатор, который соответствует имени сервера

Так как страницы без https загружаются также очень медленно, ядумаю, что это что-то еще.

Мой файл Docker выглядит следующим образом

FROM php:5.6-apache
COPY server.crt /etc/apache2/ssl/server.crt
COPY server.key /etc/apache2/ssl/server.key
RUN docker-php-ext-install pdo pdo_mysql mysqli
RUN apt-get update &&\
apt-get install --no-install-recommends --assume-yes --quiet ca-certificates 
curl git &&\
rm -rf /var/lib/apt/lists/*
RUN curl -Lsf 'https://storage.googleapis.com/golang/go1.8.3.linux- 
amd64.tar.gz' | tar -C '/usr/local' -xvzf -
ENV PATH /usr/local/go/bin:$PATH
RUN go get github.com/mailhog/mhsendmail
RUN cp /root/go/bin/mhsendmail /usr/bin/mhsendmail
RUN echo 'sendmail_path = /usr/bin/mhsendmail --smtp-addr mailhog:1025' > 
/usr/local/etc/php/php.ini
COPY ./ /var/www/html/
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
RUN a2enmod rewrite
RUN a2enmod ssl
COPY dev.conf /etc/apache2/sites-enabled/dev.conf
RUN service apache2 restart
EXPOSE 80
EXPOSE 443

Когда я нажимаю ссылку, на панели браузера в течение 40 секунд отображается Ожидание ..., но отображаетсясам контент страницы довольно быстрый

Может ли это бытьпроблема с DNS?

1 Ответ

0 голосов
/ 26 июня 2018

Я поделюсь с вами настройками докера, используя PHP + Redis + MySQL + Nginx, посмотрим, будет ли он вам полезен!

Мой Dockerfile

FROM php:7.1-fpm

RUN apt-get update
RUN apt-get install -y zlib1g-dev \
    libjpeg-dev \
    libpng-dev \
    libfreetype6-dev

# Add Microsoft repo for Microsoft ODBC Driver 13 for Linux
RUN apt-get update && apt-get install -y \
    apt-transport-https \
    && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list \
    && apt-get update

# Install Dependencies
RUN ACCEPT_EULA=Y apt-get install -y \
    unixodbc \
    unixodbc-dev \
    libgss3 \
    odbcinst \
    msodbcsql \
    locales \
    && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen

RUN pecl install pdo_sqlsrv-4.1.8preview sqlsrv-4.1.8preview \
    && docker-php-ext-enable pdo_sqlsrv sqlsrv

RUN ln -s /usr/lib/x86_64-linux-gnu/libsybdb.a /usr/lib/

RUN docker-php-ext-install pdo_mysql
RUN docker-php-ext-install zip

RUN mkdir -p /code
ENV HOME=/code
WORKDIR $HOME

USER root
COPY ./ $HOME

В этом файле докератакже есть плагин для подключения к SQLServer (у меня есть много проектов, которые я с ним интегрировал).

Теперь мой docker-compose.yml

web:
    container_name: your_web_container_name
    image: nginx
    ports:
        - "80:80"
    volumes:
        - ./:/code
        - ./host.conf:/etc/nginx/conf.d/default.conf
    links:
        - php:php
redis:
    container_name: your_redis_container_name
    image: redis
php:
    container_name: your_php_container_name
    build: ./
    dockerfile: ./Dockerfile
    volumes:
        - ./:/code
    links:
        - db
        - redis
db:
    container_name: your_database_container_name
    image: mysql:5.6
    volumes:
        - /var/lib/mysql
    ports:
        - "3306:3306"
    environment:
        - MYSQL_USER=docker
        - MYSQL_DATABASE=docker
        - MYSQL_ROOT_PASSWORD=docker
        - MYSQL_PASSWORD=docker

Надеюсь, он может быть вам полезен.

...