Snažím se nastavit docker prostředí s nginx, php, mysql, phpmyadmin, rád bych vědět, jak mohu nastavit to tak, abych mohl získat přístup k phpmyadmin přes jiný hostname.
Například pro přístup k webu, který chci používat site.com a přístup k phpmyadmin chci použít database.site.com
můj /etc/hosts je nakonfigurován jako je tento
127.0.0.1 localhost example.com database.example.com
Můj docker skladatel vypadá takto
version: '3'
services:
web:
image: nginx:alpine
container_name: nginx
volumes:
- "./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf"
- "./etc/ssl:/etc/ssl"
- "./repo:/var/www/html"
- "./etc/nginx/default.template.conf:/etc/nginx/conf.d/default.template"
ports:
- "80:80"
- "443:443"
environment:
- NGINX_HOST=site.com
networks:
- my-network
command: /bin/sh -c "envsubst '$site.com' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
restart: always
depends_on:
- php
- mysql
php:
image: bitnami/php-fpm:8.0.10
container_name: php
restart: always
volumes:
- "./etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
- "./repo:/var/www/html"
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
ports:
- "8080:80"
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mysql
networks:
- my-network
restart: always
depends_on:
- mysql
mysql:
image: mysql:8.0.27
container_name: mysql
restart: always
env_file:
- ".env"
environment:
- MYSQL_DATABASE=database
- MYSQL_ROOT_PASSWORD=root
- MYSQL_USER=admin
- MYSQL_PASSWORD=admin
ports:
- "8989:3306"
volumes:
- "./data/db/mysql:/var/lib/mysql"
networks:
my-network: null
můj nginx conf vypadá takto
server {
listen 80;
server_name example.com;
root /var/www/html/public;
...
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
}
...
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
root /var/www/html/public;
...
location / {
if ($args ~* _escaped_fragment_) {
# Pass to phantom proxy
proxy_pass http://127.0.0.1:443;
}
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Client-Verify SUCCESS;
proxy_set_header X-SSL-Subject $ssl_client_s_dn;
proxy_set_header X-SSL-Issuer $ssl_client_i_dn;
proxy_set_header HTTPS on;
proxy_buffers 16 4k;
proxy_buffer_size 2k;
proxy_pass http://127.0.0.1:433;
}
...
}
server {
listen 80;
server_name database.example.com;
location / {
proxy_pass http://phpmyadmin:80;
}
}