Last active
October 10, 2016 09:22
-
-
Save mraxus/c305e6c5e92d960efec0adc902c65421 to your computer and use it in GitHub Desktop.
Bash script to translate docker-compose service name with hostname:port
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
########## C O N F I G ########## | |
DOCKER_HOST_NAME=localhost | |
################################# | |
cmd="curl $@" | |
service_name=`echo $cmd | sed -n 's/.* \([a-zA-Z0-9_][a-zA-Z0-9_]*\)\/.*/\1/p'` | |
row=`docker-compose ps |grep _${service_name}_1` | |
### Check if the service does exist in the current project | |
if [[ $row == "" ]]; then | |
echo "There is no service called '$service_name'"; | |
exit -1; | |
fi | |
status=`echo $row | awk '{print $3}'` | |
### Check if the service is running | |
if [[ $status != "Up" ]]; then | |
status=`echo $row | awk '{print $4}'` | |
### Check if the service is running | |
if [[ $status != "Up" ]]; then | |
echo "Service is not running"; | |
exit -1; | |
fi | |
port=`echo $row | awk '{print $5}'`; port=${port:8:5} | |
else | |
port=`echo $row | awk '{print $4}'`; port=${port:8:5} | |
fi | |
real_host="${DOCKER_HOST_NAME}:$port" | |
### Build the find/replace strings with leading space and trailing / for a 'more exact' string match | |
IFS="¢" | |
find=" ${service_name}/" | |
replace=" ${real_host}/" | |
unset IFS | |
echo $real_host | |
cmd=${cmd/${find}/${replace}} | |
### Run the translated curl command | |
$cmd |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
As an addition
docker-machine ip default
could be added to find theDOCKER_HOST_NAME
as well