У меня есть докеризованное 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 секунд.
Что не так? Это связано с настройками сети?