Docker с Nginx, PHP-FPM, Composer, MySQL, PDO and PHPMyAdmin.
Нужно хранить свою библиотеку в БД. Хранятся только названия книг и авторы. У одной книги может быть несколько авторов, у одного автора может быть несколько книг. Предложите структуру таблиц и напишите SQL запрос получающий список книг, которые написаны 3-мя и более со-авторами (то есть получить отчет «книга — количество соавторов»).
На данный момент этот проект создан для работы в Unix (Linux/MacOS)
. Для MacOS тестирование не проводилось. Возможно он будет работать на Windows 10.
Необходимые программы
Проверьте установлен лиdocker-compose
следующей командой:
which docker-compose
Если нет, то установите его.
В этом проекте используются следующие порты:
Server | Port |
---|---|
MySQL | 8989 |
PHPMyAdmin | 8080 |
Nginx | 8000 |
Nginx SSL | 3000 |
Установите Git, загрузите репозиторий локально
git clone https://github.com/Lelya/docker-nginx-php-mysql-pdo-2.git
Перейдите в папку проекта:
cd docker-nginx-php-mysql-pdo-2
.
├── Makefile
├── README.md
├── data
│ └── db
│ ├── dumps
│ └── mysql
├── docker-compose.yml
├── etc
│ ├── nginx
│ │ ├── default.conf
│ │ └── default.template.conf
│ ├── php
| | └── Dockerfile
│ │ └── php.ini
│ └── ssl
└── web
├── app
│ ├── composer.json.dist
│ ├── src
│ │ └── Init.php
└── public
└── index.php
Вы можете изменить имя сервера отредоктировав .env
file.
Если вы изменили имя сервера, то не забудьте добавить его в /etc/hosts
файл.
-
Генерация SSL certificates
source .env && sudo docker run --rm -v $(pwd)/etc/ssl:/certificates -e "SERVER=$NGINX_HOST" jacoelho/generate-certificate
-
Конфигурация Nginx
Не изменяйте
etc/nginx/default.conf
файл, он перезаписывается сetc/nginx/default.template.conf
Отредактируйте
etc/nginx/default.template.conf
и расскоментируйте раздел ssl:# server { # server_name ${NGINX_HOST}; # # listen 443 ssl; # fastcgi_param HTTPS on; # ... # }
-
Скопируйте конфигурационный файл composer.json:
cp web/app/composer.json.dist web/app/composer.json
-
Запуск приложения :
sudo docker-compose up -d
Это может занять несколько минут, пока подгрузятся все зависимости
sudo docker-compose logs -f # Follow log output
-
Откройте в браузере:
- http://localhost:8000
- https://localhost:3000 (HTTPS не сконфигурирован по умолчанию)
- http://localhost:8080 PHPMyAdmin (username: dev, password: dev)
-
Остановка и очистка сервисов
sudo docker-compose down -v