Это приложение я реализовал на сервис-обнаружении с использованием containerpilot и nginx. Я ссылался на этот URL - https://github.com/MohamedFawzy/hotels
Этот URL-адрес реализован в приложениях консула, контейнерного пилота, nginx и отдельного laravel.
Я реализовал так же. Работает нормально.
Я хочу интегрировать микроуслуги в несколько API с несколькими папками. Я изменил несколько изменений в нескольких файлах. Ниже моей новой структуры папок.
projectName
|_ source
|_ index.php
|_ customer
|_ Lumen Files
|_ vendor
|_ Lumen Files
|_ driver
|_ Lumen Files
|_ docker
|_ docker-compose.yml
|_ autodiscovery
|_ Dockerfile
|_ microservices
|_ nginx
|_ config
|_ containerpilot.json
|_ nginx
|_ nginx.conf.ctmpl
|_ Dockerfile
|_ scripts
|_ reload.sh
|_ sensor.sh
|_ customer
|_ php-fpm
|_ config
|_ containerpilot.json
|_ Dockerfile
|_ scripts
|_ reload.sh
|_ vendor
|_ php-fpm
|_ config
|_ containerpilot.json
|_ Dockerfile
|_ scripts
|_ reload.sh
|_ driver
|_ php-fpm
|_ config
|_ containerpilot.json
|_ Dockerfile
|_ scripts
|_ reload.sh
Я добавил файл docker-compose.yml.
version: '2'
services:
##
# Autodiscovery : Consul
##
autodiscovery:
build: ./autodiscovery/
mem_limit: 128m
expose:
- 53
- 8300
- 8301
- 8302
- 8400
- 8500
ports:
- 8500:8500
dns:
- 127.0.0.1
##
# Battle Microservice
##
microservice_customer_1_0:
build: ./microservices/customer/php-fpm/
links:
- autodiscovery
environment:
- BACKEND=microservice-nginx-new
- CONSUL=autodiscovery
ports:
- 9001:9000
##
microservice_vendor_1_0:
build: ./microservices/vendor/php-fpm/
links:
- autodiscovery
environment:
- BACKEND=microservice-nginx-new
- CONSUL=autodiscovery
ports:
- 9002:9000
##
microservice_driver_1_0:
build: ./microservices/driver/php-fpm/
links:
- autodiscovery
environment:
- BACKEND=microservice-nginx-new
- CONSUL=autodiscovery
ports:
- 9003:9000
microservice_nginx:
build: ./microservices/nginx/
links:
- autodiscovery
environment:
- BACKEND=microservice-customer_1_0
- BACKEND=microservice-vendor_1_0
- BACKEND=microservice-driver_1_0
- CONSUL=autodiscovery
ports:
- 8081:80
- 9091:9090
#mysqldb:
# image: mysql:latest
# container_name: "mysqldb"
# ports:
# - "3307:3306"
Папка Microservice, имеющая папку nginx. Эта папка с файлом nginx.ctmpl. В этот файл я добавил данные сервера.
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
gzip on;
{{ $backend := env "BACKEND" }}
{{ if service $backend }}
upstream {{ $backend }} {
# write the address:port pairs for each healthy backend instance
{{range service $backend }}
server {{.Address}}:{{.Port}};
{{end}}
least_conn;
}{{ end }}
server {
listen 80 default_server;
server_name _;
root /var/www/html/source;
index index.php index.html;
charset utf-8;
location /nginx-health {
access_log off;
error_log off;
stub_status on;
allow 127.0.0.1;
deny all;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log error;
sendfile off;
client_max_body_size 100m;
location / {
try_files $uri $uri/ /index.php?_url=$uri&$args;
}
location ^~ /customer {
root /var/www/html/source/customer/public;
}
location ^~ /vendor {
root /var/www/html/source/vendor/public;
}
location ^~ /driver {
root /var/www/html/source/driver/public;
}
location ~ /\.ht {
deny all;
}
{{ if service $backend }}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass {{ $backend }};
fastcgi_index /index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
{{ end }}
}
}
Я запустил команду compose.
docker-compose up --build -d
Я проверил в браузере пользовательский интерфейс консула. Работает нормально.
https://ibb.co/9rf2zw9
Я проверил URL. Это показывает 404 не найдена ошибка.
https://ibb.co/dbyWP78