Dockerized веб-приложение занимает слишком много времени для http-звонков - PullRequest
0 голосов
/ 02 мая 2020

У меня есть докеризованное Laravel приложение, и я использую docker -compose для запуска приложения. Когда я запускаю приложение с помощью docker и выполняю простой вызов API ping, на ответ требуется менее 200 мс. Но когда я запускаю его с помощью docker -compose, для ответа требуется более 3 секунд.

Я использовал команду docker run -it --rm -p 8080:8080 senik_laravel:latest для запуска контейнера, и вот время ответа:

curl 127.0.0.1:8080/ping -w %{time_total}

Ответ:

PONG
0.180260

Вы видите, что для ответа требуется 0.180260 секунда.

Когда я запускаю приложение, используя файл docker-compose, требуется больше, чем 3 секунды для ответа.

curl 127.0.0.1:8080/ping -w %{time_total}

Ответ:

PONG
3.834007

Вы видите, что для ответа требуется 3.834007 секунд.

Вот полный docker-compose file:

version: '3.7'
networks:
  app_net:
    driver: bridge

services:
  laravel:
    build: 
      context: ./laravel
      dockerfile: Dockerfile
    container_name: senik_laravel
    volumes:
      - ./laravel:/var/www/html
    working_dir: /var/www/html
    ports:
      - '80:8080'
    networks:
      - app_net
  mysql-master:
    image: 'bitnami/mysql:8.0.19'
    container_name: senik_mysql_master
    restart: always
    ports:
      - '3306:3306'

    volumes:
      - ./mysql_master_data:/bitnami/mysql
      - ./docker-configs/mysql/init:/docker-entrypoint-initdb.d
    environment:
    - MYSQL_DATABASE=appdb
    - MYSQL_ROOT_PASSWORD=pass
    - MYSQL_AUTHENTICATION_PLUGIN=mysql_native_password
    networks:
      - app_net

  phpmyadmin:
    image: 'bitnami/phpmyadmin:latest'
    container_name: senik_phpmyadmin
    ports: 
      - '8080:80'
    environment:
      DATABASE_HOST: mysql-master
      PHPMYADMIN_PASSWORD: pass
    restart: always
    volumes:
      - 'phpmyadmin_data:/bitnami'
    depends_on: 
      - mysql-master
    networks: 
      - app_net
volumes:
  phpmyadmin_data:
    driver: local

Этот ping API не выполняет никаких вызовов базы данных. Он просто возвращает pong.

Я протестировал API с вызовом базы данных, и на ответ требуется около 19 секунд.

Что не так? Это связано с настройками сети?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...