docker-image-nginx/README.md
2023-11-02 12:41:30 +03:00

97 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# docker-image-nginx
Простой контейнер, позволяющий развернуть сервис с php7.4 без mysql на базе образа Debian 11
## Подготовка на примере Debian
Устанавливаем необходимые пакеты
```
sudo apt update
sudo apt install docker-compose docker.io git
```
Клонируем репозиторий
```
git clone https://gitea.mayex.net/mayekkuzu/docker-image-nginx.git
cd docker-image-nginx
```
## Подготовка образа
Для начала образ нужно собрать. Опционально можете добавить требуемые модули php7.4 в блоке установки пакетов в Dockerfile, например php7.4-zip:
```
...
# Устанавливаем пакеты, выключаем режим демона в конфигурационном файле и создаем папку /run/php для работы php-fpm
RUN apt update -y
RUN apt install -y nginx php7.4 php7.4-fpm php7.4-zip
...
```
Далее собираем образ, обозначаем имя образа, например *mkz/nginx-php7*
```
docker build -t mkz/nginx-php7:latest .
```
Проверяем что наш образ появился в списке
```
mayekkuzu@microsrv:~/projects/nginx-docker$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mkz/nginx-php7 latest 64e6150d7bbd 55 minutes ago 288MB
```
Можно запускать контейнер. Например, файлы храним в папке `/mnt/nginxsite`. Поскольку 80 порт уже занят, назначаем порт 8081. Чтобы проверить занятые порты, используйте команду `ss -tulpn`
```
docker run --name test_server -d -p 8081:80 -v /mnt/nginxsite:/var/www/html/ mkz/nginx-php7:latest
```
Проверяем запустился ли контейнер
```
mayekkuzu@microsrv:~/projects/nginx-docker$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e6b982dd7c4 mkz/nginx-php7:latest "/bin/sh -c 'php-fpm…" 12 seconds ago Up 11 seconds 0.0.0.0:8081->80/tcp, :::8081->80/tcp test_server
```
Создадим в папке /mnt/nginxsite фаил index.html и test.php для проверки работы PHP
```
echo 'Hello World!' > /mnt/nginxsite/index.html
```
```
tee -a /mnt/nginxsite/test.php <<EOF
<?php
phpinfo();
?>
EOF
```
Проверяем ответ сервера
```
mayekkuzu@microsrv:~/projects/nginx-docker$ wget -qO- 'http://192.168.111.100:8081/test.php' |
perl -l -0777 -ne 'print $1 if /<title.*?>\s*(.*?)\s*<\/title/si'
PHP 7.4.33 - phpinfo()
mayekkuzu@microsrv:~/projects/nginx-docker$ curl 192.168.111.100:8081
Hello World!
```
## Запуск контейнера на примере docker-compose
В файле docker-compose.yaml требуется указать собранный образ, порт и рабочую папку
```
version: '3.8'
services:
nginx-php7:
image: mkz/nginx-php7:latest
volumes:
- ./path-to-site/:/var/www/html
ports:
- "8081:80"
restart: unless-stopped
```
Запуск командой `docker-compose up -d`