diff --git a/CHANGES.md b/CHANGES.md index cca8565..1c5f828 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,9 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## Unreleased +- Resolve hostname #111 @mosuka + ## 0.8.3 (2020-11-07) - Bump up version to 0.8.3 #110 @mosuka - Update dependencies #109 @mosuka diff --git a/bayard-rest/src/main.rs b/bayard-rest/src/main.rs index 04054d0..6161000 100644 --- a/bayard-rest/src/main.rs +++ b/bayard-rest/src/main.rs @@ -1,6 +1,8 @@ #[macro_use] extern crate clap; +use std::net::ToSocketAddrs; + use clap::{App, AppSettings, Arg}; use crossbeam_channel::select; use log::*; @@ -143,19 +145,32 @@ async fn main() -> std::io::Result<()> { key_file = _key_file; } - let rest_address = format!("{}:{}", host, port); + let rest_address = format!("{}:{}", host, port) + .to_socket_addrs() + .unwrap() + .next() + .unwrap() + .to_string(); + let index_address = index_address + .to_socket_addrs() + .unwrap() + .next() + .unwrap() + .to_string(); let enable_cors = !cors_origin.is_empty() && !cors_methods.is_empty() && !cors_headers.is_empty(); let enable_tls = !cert_file.is_empty() && !key_file.is_empty(); let mut rest_server = match (enable_tls, enable_cors) { - (false, false) => { - RestServer::new(rest_address.as_str(), index_address, http_worker_threads) - } + (false, false) => RestServer::new( + rest_address.as_str(), + index_address.as_str(), + http_worker_threads, + ), (false, true) => RestServer::new_cors( rest_address.as_str(), - index_address, + index_address.as_str(), http_worker_threads, cors_origin, cors_methods, @@ -163,14 +178,14 @@ async fn main() -> std::io::Result<()> { ), (true, false) => RestServer::new_tls( rest_address.as_str(), - index_address, + index_address.as_str(), http_worker_threads, cert_file, key_file, ), (true, true) => RestServer::new_cors_tls( rest_address.as_str(), - index_address, + index_address.as_str(), http_worker_threads, cors_origin, cors_methods, diff --git a/bayard/src/main.rs b/bayard/src/main.rs index 19b3114..e6f5dda 100644 --- a/bayard/src/main.rs +++ b/bayard/src/main.rs @@ -4,7 +4,7 @@ extern crate clap; use std::collections::HashMap; use std::convert::TryFrom; use std::io; -use std::net::SocketAddr; +use std::net::ToSocketAddrs; use std::path::Path; use std::sync::Arc; @@ -138,6 +138,7 @@ async fn main() -> Result<(), Box> { let id = matches.value_of("ID").unwrap().parse::().unwrap(); let host = matches.value_of("HOST").unwrap(); + let raft_port = matches .value_of("RAFT_PORT") .unwrap() @@ -153,9 +154,14 @@ async fn main() -> Result<(), Box> { .unwrap() .parse::() .unwrap(); - let mut peer_address = ""; + let mut peer_address = "".to_string(); if let Some(_peer_address) = matches.value_of("PEER_RAFT_ADDRESS") { - peer_address = _peer_address; + peer_address = _peer_address + .to_socket_addrs() + .unwrap() + .next() + .unwrap() + .to_string(); } let data_directory = matches.value_of("DATA_DIRECTORY").unwrap(); let schema_file = matches.value_of("SCHEMA_FILE").unwrap(); @@ -171,8 +177,18 @@ async fn main() -> Result<(), Box> { .parse::() .unwrap(); - let raft_address = format!("{}:{}", host, raft_port); - let index_address = format!("{}:{}", host, index_port); + let raft_address = format!("{}:{}", host, raft_port) + .to_socket_addrs() + .unwrap() + .next() + .unwrap() + .to_string(); + let index_address = format!("{}:{}", host, index_port) + .to_socket_addrs() + .unwrap() + .next() + .unwrap() + .to_string(); let node_address = NodeAddress { index_address, @@ -182,8 +198,8 @@ async fn main() -> Result<(), Box> { let mut addresses = HashMap::new(); // change config - if peer_address != "" { - let mut client = RaftClient::new(peer_address); + if !peer_address.is_empty() { + let mut client = RaftClient::new(&peer_address); match client.join(id, node_address.clone()) { Ok(_addresses) => addresses = _addresses, Err(e) => return Err(Box::try_from(e).unwrap()), @@ -238,7 +254,11 @@ async fn main() -> Result<(), Box> { } // metrics service - let metrics_address: SocketAddr = format!("{}:{}", host, metrics_port).parse().unwrap(); + let metrics_address = format!("{}:{}", host, metrics_port) + .to_socket_addrs() + .unwrap() + .next() + .unwrap(); let metrics_service = make_service_fn(|_| async { Ok::<_, io::Error>(service_fn(handle)) }); let metrics_server = Server::bind(&metrics_address).serve(metrics_service); let metrics_server_graceful = metrics_server.with_graceful_shutdown(shutdown_signal()); diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..76eed1c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,31 @@ +version: '3' + +services: + bayard: + container_name: bayard + image: bayardsearch/bayard:latest + entrypoint: bayard + command: + - '--host=bayard' + - '--raft-port=7000' + - '--index-port=5000' + - '--metrics-port=9000' + - '--data-directory=/tmp/bayard' + - '--schema-file=/etc/bayard/schema.json' + - '--tokenizer-file=/etc/bayard/tokenizer.json' + - '1' + ports: + - "5000:5000" + - "7000:7000" + - "9000:9000" + + bayard-rest: + container_name: bayard-rest + image: bayardsearch/bayard-rest:latest + entrypoint: bayard-rest + ports: + - "8000:8000" + command: + - '--index-address=bayard:5000' + depends_on: + - bayard