Folosesc docker-compose cu nginx reverse proxy pentru a-l rula pe server cu căi diferite:
- ip_server/backend
- ip_server /frontend
ar trebui să funcționeze pe portul 80.
Îl testez cu un docker-compose folosind nginx ca nume de container web și phpmyadmin ca nume de container myadmin (mysql):
Servicii:
web:
imagine: nginx:alpine
retele:
docker-network:
aliasuri:
- numele frontend-ului
container_name: web
volume:
- „./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf”
- „./etc/ssl:/etc/ssl”
- „./web:/var/www/html”
- „./etc/nginx/default.template.conf:/etc/nginx/conf.d/default.template”
porturi:
- „${HTTP_PORT}:80”
- „${HTTPS_PORT}:443”
mediu inconjurator:
- NGINX_HOST=${NGINX_HOST}
#- VIRTUAL_HOST= a.com
comandă: /bin/sh -c "envsubst '$$NGINX_HOST' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;' "
reporniți: întotdeauna
depinde de:
- php
- mysqldb
php:
imagine: nanoninja/php-fpm:latest
retele:
docker-network:
aliasuri:
- php-name
nume_container: php-fpm
reporniți: întotdeauna
volume:
- „./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini”
- „./web:/var/www/html”
myadmin:
imagine: phpmyadmin/phpmyadmin
retele:
docker-network:
aliasuri:
- nume-backend
container_name: myadmin
porturi:
- „${PHPMYADMIN_PORT}:80”
mediu inconjurator:
- PMA_ARBITRARY=1
- PMA_HOST=${MYSQL_HOST}
# - PMA_ABSOLUTE_URI: https://localhost/pma/
reporniți: întotdeauna
depinde de:
- mysqldb
mysqldb:
construi:
context: .
dockerfile: Dockerfile-mariadb
argumente:
MARIADB_VERSION: ${MARIADB_VERSION}
retele:
docker-network:
aliasuri:
- nume-mysql
container_name: ${MYSQL_HOST}
reporniți: întotdeauna
env_file:
- „.env”
mediu inconjurator:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
porturi:
- „127.0.0.1:${MYSQL_PORT}:3306”
volume:
- „./mysql-bbdd:/var/lib/mysql”
retele:
docker-network:
# șofer: pod
folosind fișierul nginx default.conf pentru a face proxy invers:
Server {
asculta 80 default_server;
asculta [::]:80 default_server;
nume_server gazdă locală;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/public;
locație ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
Locație / {
proxy_pass http://web;
}
locație /api {
proxy_pass http://myadmin:8080/;
}
locație = /404.html {
intern;
}
}
dar nu imi merge cand pun ip-ul serverului cu rutele lui, nu stiu ce sa fac.