49 lines
1.7 KiB
Bash
Executable file
49 lines
1.7 KiB
Bash
Executable file
#!/bin/bash
|
|
# A script to quickly setup a running development environment
|
|
#
|
|
# It's primary purpose is to set up docker networking correctly so that
|
|
# the bot can connect to remote services as well as those hosted on
|
|
# the host machine.
|
|
#
|
|
|
|
# Change directory to where this script is located. We'd like to run
|
|
# `docker-compose` in the same directory to use the adjacent
|
|
# docker-compose.yml and .env files
|
|
cd `dirname "$0"`
|
|
|
|
function on_exit {
|
|
cd -
|
|
}
|
|
|
|
# Ensure we change back to the old directory on script exit
|
|
trap on_exit EXIT
|
|
|
|
# To allow the docker container to connect to services running on the host,
|
|
# we need to use the host's internal ip address. Attempt to retrieve this.
|
|
#
|
|
# Check whether the ip address has been defined in the environment already
|
|
if [ -z "$HOST_IP_ADDRESS" ]; then
|
|
# It's not defined. Try to guess what it is
|
|
|
|
# First we try the `ip` command, available primarily on Linux
|
|
export HOST_IP_ADDRESS="`ip route get 1 | sed -n 's/^.*src \([0-9.]*\) .*$/\1/p'`"
|
|
|
|
if [ $? -ne 0 ]; then
|
|
# That didn't work. `ip` isn't available on old Linux systems, or MacOS.
|
|
# Try `ifconfig` instead
|
|
export HOST_IP_ADDRESS="`ifconfig $(netstat -rn | grep -E "^default|^0.0.0.0" | head -1 | awk '{print $NF}') | grep 'inet ' | awk '{print $2}' | grep -Eo '([0-9]*\.){3}[0-9]*'`"
|
|
|
|
if [ $? -ne 0 ]; then
|
|
# That didn't work either, give up
|
|
echo "
|
|
Unable to determine host machine's internal IP address.
|
|
Please set HOST_IP_ADDRESS environment variable manually and re-run this script.
|
|
If you do not have a need to connect to a homeserver running on the host machine,
|
|
set HOST_IP_ADDRESS=127.0.0.1"
|
|
exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Build and run latest code
|
|
docker-compose up --build local-checkout-dev
|