У нас есть проект, в котором мы должны построить две автономные системы - Персоны и Проекты (некоторые группы должны реализовывать людей, а другие - проекты - мы должны реализовывать человека).Для каждого есть отдельный банк данных, и они должны обмениваться информацией друг с другом.Это работает без проблем (я думаю).
Проблема возникает с файлом docker-compose.yml:
version: "3.1"
services:
proxy:
image: nginx:1.15-alpine
ports:
- 8080:80
volumes:
- ./proxy/conf/nginx.conf:/etc/nginx/nginx.conf:ro
- ./proxy/conf/domain.conf:/etc/nginx/domain.conf:ro
depends_on:
- projekt
- person
# ========================================
# Falls Sie das Person-SCS implementieren,
# überschreiben Sie diesen Teil
persondb:
image: mysql
environment:
- "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}"
- "MYSQL_DATABASE=${MYSQL_DATABASE}"
- "MYSQL_USER=${MYSQL_USER}"
- "MYSQL_PASSWORD=${MYSQL_PASSWORD}"
volumes:
- ./data:/var/lib/mysql
person:
#networks:
# - default
build: ./person-scs/.
depends_on:
- persondb
environment:
- "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}"
- "MYSQL_DATABASE=${MYSQL_DATABASE}"
- "MYSQL_USER=${MYSQL_USER}"
# ========================================
# Falls Sie das Projekt-SCS implementieren,
# überschreiben Sie diesen Teil
projekt:
image: hashicorp/http-echo
command: -listen=:8080 -text="Hello from projekt"
projektdb:
image: hashicorp/http-echo
command: -listen=:3306 -text="I am just a dummy"
# ========================================
Была дана вся прокси-часть docker-composeнам нашим инструктором, а также частями projekt и projektdb (потому что мы не реализуем проект SCS).
Одна из инструкций заключалась в том, что никакой порт, кроме 8080, не будет виден "изснаружи "и что мы должны вызвать Person-API через" localhost: 8080 / person ".На данный момент, когда я вызываю localhost, я получаю страницу ошибки Whitelabel с сообщением 404.
Когда я игнорирую прокси-сервер и внедряю docker-compose внутри моего Person-каталога (с тем же Dockerfile), у меня нет проблем с просмотром страницы localhost: 8080 / person, и все работает просто отлично.
Они не дали нам никакого опыта в написании файлов для создания докеров, поэтому я не уверен, что даже для Google.Надеюсь, кто-то может дать совет.
Редактировать:
nginx.conf выглядит так:
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;
include /etc/nginx/domain.conf;
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;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80 default_server;
location / {
proxy_pass http://person:8080/;
}
}
}
И файл domain.conf:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
# Assets
# location / {
# root /usr/share/nginx/html;
# index index.html index.htm;
# }
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
# set maximum allowed files
client_max_body_size 10M;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /person {
proxy_pass http://person:8080/;
}
location /projekt {
proxy_pass http://projekt:8080/;
}
}
Я знаю, что"...proxy_pass..."
часть находится в файлах domain.conf и nginx.conf, похоже, это не проблема.
Не знаю, уместно ли это, но я также использую загрузку Spring.