В настоящее время у меня есть 2 контейнера Docker:
Я запускаю оба контейнера отдельно с докер-композитор Nginx прослушивает порт 8080 и должен пересылать HTTP-запросы приложению, которое прослушивает порт 8081. В настоящее время это не работает, поскольку nginx ничего не знает о контейнере приложения.
86615a5b0f02 parzee/loadbalancer "/usr/local/bin/start" 3 minutes ago Up 3 minutes 127.0.0.1:8080->8080/tcp loadbalancer_loadbalancer_1
9adc8a04b356 parzee/application "/usr/local/bin/start" 6 minutes ago Up 5 minutes 127.0.0.1:8081->8081/tcp application_application_1
Это моя конфигурация по умолчанию
upstream application {
ip_hash;
server application_application_1:8081 fail_timeout=0;
server application_application_2:8081 fail_timeout=0;
keepalive 64;
}
server {
listen 8080;
server_name loadbalancer;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
#Timeout after 8 hours
proxy_read_timeout 43200000;
proxy_connect_timeout 43200000;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://application;
break;
}
}
}
Я получил:
2016/02/15 08:42:07 [emerg] 21#0: host not found in upstream "application_application_1:8081" in /etc/nginx/sites-enabled/default:3
2016/02/15 08:42:10 [emerg] 22#0: host not found in upstream "application_application_1:8081" in /etc/nginx/sites-enabled/default:3
Как определить мою конфигурацию nginx, используя хосты или IP-адреса? Я не использовал IP-адреса, поскольку докер может назначать разные IP-адреса из известного диапазона. Какие-либо предложения? Должен ли я запускать их все в одном файле docker-compose.yml?
вы определили ссылка на сайт в application_application_1 в вашем файле docker-compose.yml?
Ссылки сделал трюк:
database:
image: parzee/database
volumes_from:
- dbdata
ports:
- "5432:5432"
# RABBITMQ TCP:5672
rabbitmq:
image: parzee/rabbitmq-server
hostname: rabbitmq
ports:
- "5672:5672"
- "15672:15672"
# LIGHTTPD TCP:8083
lighttpd:
image: parzee/lighttpd
hostname: lighttpd
ports:
- "8083:8083"
volumes:
- /usr/local/src/containers/application/volumes/imbue/:/usr/local/src/imbue/application/imbue/utils/security/des/
- /usr/local/src/containers/lighttpd/volumes/log/:/var/log/lighttpd/
# APPLICATION TCP:8081
application_1:
image: parzee/application
hostname: application_1
links:
- database:database
- lighttpd:lighthttpd
- rabbitmq:rabbitmq