Я использую docker-compose с обратным прокси-сервером nginx, чтобы запускать его на сервере с разными путями:
- server_ip/бэкенд
- server_ip / интерфейс
должен работать на порту 80.
Я тестирую его с помощью docker-compose, используя nginx в качестве имени веб-контейнера и phpmyadmin в качестве имени контейнера myadmin (mysql):
Сервисы:
веб:
изображение: nginx:alpine
сети:
докер-сеть:
псевдонимы:
- имя интерфейса
имя_контейнера: сеть
тома:
- "./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf"
- "./и т.д./ssl: /и т.д./ssl"
- "./веб:/вар/www/html"
- "./etc/nginx/default.template.conf:/etc/nginx/conf.d/default.template"
порты:
- "${HTTP_PORT}:80"
- "${HTTPS_PORT}:443"
среда:
- NGINX_HOST=${NGINX_HOST}
#- VIRTUAL_HOST= a.com
команда: /bin/sh -c "envsubst '$$NGINX_HOST' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && nginx -g 'демон выключен;' "
перезапуск: всегда
зависит от:
- пхп
- mysqldb
php:
изображение: nanoninja/php-fpm:последнее
сети:
докер-сеть:
псевдонимы:
- php-имя
имя_контейнера: php-fpm
перезапуск: всегда
тома:
- "./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
- "./веб:/вар/www/html"
мой администратор:
изображение: phpmyadmin/phpmyadmin
сети:
докер-сеть:
псевдонимы:
- backend-имя
имя_контейнера: myadmin
порты:
- "${PHPMYADMIN_PORT}:80"
среда:
- PMA_ARBITRARY=1
- PMA_HOST=${MYSQL_HOST}
# - PMA_ABSOLUTE_URI: https://localhost/pma/
перезапуск: всегда
зависит от:
- mysqldb
mysqldb:
строить:
контекст: .
dockerfile: Dockerfile-mariadb
аргументы:
MARIADB_VERSION: ${MARIADB_VERSION}
сети:
докер-сеть:
псевдонимы:
- mysql-имя
имя_контейнера: ${MYSQL_HOST}
перезапуск: всегда
env_file:
- ".env"
среда:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
порты:
- "127.0.0.1:${MYSQL_PORT}:3306"
тома:
- "./mysql-bbdd:/var/lib/mysql"
сети:
докер-сеть:
# водитель: мост
используя файл nginx default.conf для обратного прокси:
сервер {
слушать 80 default_server;
слушать [::]:80 default_server;
имя_сервера локальный хост;
индекс index.php index.html;
журнал_ошибок /var/log/nginx/error.log;
журнал_доступа /var/log/nginx/access.log;
корень /var/www/html/public;
расположение ~ \.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass PHP: 9000;
fastcgi_index index.php;
включить fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
место расположения / {
proxy_pass http://web;
}
расположение /API {
прокси_пароль http://myadmin:8080/;
}
местоположение = /404.html {
внутренний;
}
}
а у меня не работает когда ставлю ip сервера с его маршрутами, не знаю что делать.