utilize ENV for most endpoint hostnames

This commit is contained in:
kevin crawley
2018-04-14 22:48:30 -05:00
parent 96f752a259
commit 0a72d0ba86
10 changed files with 44 additions and 15 deletions

View File

@@ -14,6 +14,9 @@ const express = require('express');
var redisConnected = false; var redisConnected = false;
var redisHost = process.env.REDIS_HOST || 'redis'
var catalogueHost = process.env.CATALOGUE_HOST || 'catalogue'
const app = express(); const app = express();
app.use((req, res, next) => { app.use((req, res, next) => {
@@ -284,7 +287,7 @@ function calcTax(total) {
function getProduct(sku) { function getProduct(sku) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
request('http://catalogue:8080/product/' + sku, (err, res, body) => { request('http://' + catalogueHost + ':8080/product/' + sku, (err, res, body) => {
if(err) { if(err) {
reject(err); reject(err);
} else if(res.statusCode != 200) { } else if(res.statusCode != 200) {
@@ -308,7 +311,7 @@ function saveCart(id, cart) {
// connect to Redis // connect to Redis
var redisClient = redis.createClient({ var redisClient = redis.createClient({
host: 'redis' host: redisHost
}); });
redisClient.on('error', (e) => { redisClient.on('error', (e) => {

View File

@@ -3,9 +3,11 @@ FROM golang:1.9.2
WORKDIR /opt/gorcv WORKDIR /opt/gorcv
ENV GOPATH=/opt/gorcv \ ENV GOPATH=/opt/gorcv \
GOBIN=/opt/gorcv/bin GOBIN=/opt/gorcv/bin \
AMQP_URI=rabbitmq
# install external components # install external components
# @todo godep
RUN go get \ RUN go get \
github.com/streadway/amqp \ github.com/streadway/amqp \
github.com/instana/golang-sensor github.com/instana/golang-sensor
@@ -14,5 +16,7 @@ COPY src /opt/gorcv/
RUN go build && go install RUN go build && go install
# @todo stage this build
CMD bin/gorcv CMD bin/gorcv

View File

@@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"log" "log"
"time" "time"
"os"
"github.com/streadway/amqp" "github.com/streadway/amqp"
"github.com/instana/golang-sensor" "github.com/instana/golang-sensor"
@@ -15,9 +16,8 @@ const (
Service = "Dispatch" Service = "Dispatch"
) )
var amqpUri string = "amqp://guest:guest@rabbitmq:5672/"
var ( var (
amqpUri string
rabbitChan *amqp.Channel rabbitChan *amqp.Channel
rabbitCloseError chan *amqp.Error rabbitCloseError chan *amqp.Error
rabbitReady chan bool rabbitReady chan bool
@@ -111,6 +111,9 @@ func main() {
Service: Service, Service: Service,
LogLevel: instana.Info})) LogLevel: instana.Info}))
// Init amqpUri
amqpUri = fmt.Sprintf("amqp://guest:guest@%s:5672/", os.Getenv("AMQP_HOST"))
// MQ error channel // MQ error channel
rabbitCloseError = make(chan *amqp.Error) rabbitCloseError = make(chan *amqp.Error)

View File

@@ -1,8 +1,9 @@
import json import json
import pika import pika
import os
class Publisher: class Publisher:
HOST = 'rabbitmq' HOST = os.getenv("AMQP_HOST", "rabbitmq")
VIRTUAL_HOST = '/' VIRTUAL_HOST = '/'
EXCHANGE='robot-shop' EXCHANGE='robot-shop'
TYPE='direct' TYPE='direct'

View File

@@ -22,6 +22,9 @@ EXPOSE 8080
WORKDIR /opt/shipping WORKDIR /opt/shipping
ENV CART_ENDPOINT=cart:8080
ENV DB_HOST=mysql
COPY --from=build /opt/shipping/target/shipping-1.0-jar-with-dependencies.jar shipping.jar COPY --from=build /opt/shipping/target/shipping-1.0-jar-with-dependencies.jar shipping.jar
CMD [ "java", "-jar", "shipping.jar" ] CMD [ "java", "-jar", "shipping.jar" ]

View File

@@ -30,11 +30,17 @@ import java.util.List;
import java.util.Map; import java.util.Map;
public class Main { public class Main {
private static String CART_URL = "http://cart:8080/shipping/"; private static String CART_URL = null;
private static String JDBC_URL = null;
private static Logger logger = LoggerFactory.getLogger(Main.class); private static Logger logger = LoggerFactory.getLogger(Main.class);
private static ComboPooledDataSource cpds = null; private static ComboPooledDataSource cpds = null;
public static void main(String[] args) { public static void main(String[] args) {
// Get ENV configuration values
Map<String, String> env = System.getenv();
CART_URL = String.format("http://%s/shipping/", env.get("CART_ENDPOINT"));
JDBC_URL = String.format("jdbc:mysql://%s/cities?useSSL=false&autoReconnect=true", env.get("DB_HOST"));
// //
// Create database connector // Create database connector
// TODO - might need a retry loop here // TODO - might need a retry loop here
@@ -42,7 +48,7 @@ public class Main {
try { try {
cpds = new ComboPooledDataSource(); cpds = new ComboPooledDataSource();
cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver
cpds.setJdbcUrl( "jdbc:mysql://mysql/cities?useSSL=false&autoReconnect=true" ); cpds.setJdbcUrl( JDBC_URL );
cpds.setUser("shipping"); cpds.setUser("shipping");
cpds.setPassword("secret"); cpds.setPassword("secret");
// some config // some config

View File

@@ -196,7 +196,7 @@ app.get('/history/:id', (req, res) => {
// connect to Redis // connect to Redis
var redisClient = redis.createClient({ var redisClient = redis.createClient({
host: 'redis' host: process.env.REDIS_HOST || 'redis'
}); });
redisClient.on('error', (e) => { redisClient.on('error', (e) => {

View File

@@ -2,9 +2,15 @@ FROM nginx:1.13.8
EXPOSE 8080 EXPOSE 8080
ENV CATALOGUE_HOST=catalogue \
USER_HOST=user \
CART_HOST=cart \
SHIPPING_HOST=shipping \
PAYMENT_HOST=payment
COPY entrypoint.sh /root/ COPY entrypoint.sh /root/
ENTRYPOINT ["/root/entrypoint.sh"] ENTRYPOINT ["/root/entrypoint.sh"]
COPY default.conf /etc/nginx/conf.d/default.conf COPY default.conf.template /etc/nginx/conf.d/default.conf.template
COPY static /usr/share/nginx/html COPY static /usr/share/nginx/html

View File

@@ -44,23 +44,23 @@ server {
#} #}
location /api/catalogue/ { location /api/catalogue/ {
proxy_pass http://catalogue:8080/; proxy_pass http://${CATALOGUE_HOST}:8080/;
} }
location /api/user/ { location /api/user/ {
proxy_pass http://user:8080/; proxy_pass http://${USER_HOST}:8080/;
} }
location /api/cart/ { location /api/cart/ {
proxy_pass http://cart:8080/; proxy_pass http://${CART_HOST}:8080/;
} }
location /api/shipping/ { location /api/shipping/ {
proxy_pass http://shipping:8080/; proxy_pass http://${SHIPPING_HOST}:8080/;
} }
location /api/payment/ { location /api/payment/ {
proxy_pass http://payment:8080/; proxy_pass http://${PAYMENT_HOST}:8080/;
} }
location /nginx_status { location /nginx_status {

View File

@@ -32,5 +32,8 @@ fi
# make sure nginx can access the eum file # make sure nginx can access the eum file
chmod 644 $BASE_DIR/eum.html chmod 644 $BASE_DIR/eum.html
# apply environment variables to default.conf
envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf
exec nginx -g "daemon off;" exec nginx -g "daemon off;"