start-dev 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/usr/bin/env bash
  2. set -e
  3. DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  4. . "$DIR/.common.sh"
  5. get_container_ip () {
  6. local container_name=$1
  7. local container
  8. local ip
  9. container=$(docker-compose ps --all -q "${container_name}" | tail -n1)
  10. ip=$(docker inspect -f "{{.NetworkSettings.Networks.npmdev_default.IPAddress}}" "$container")
  11. echo "$ip"
  12. }
  13. # Ensure docker-compose exists
  14. if hash docker-compose 2>/dev/null; then
  15. cd "${DIR}/.."
  16. echo -e "${BLUE}❯ ${CYAN}Starting Dev Stack ...${RESET}"
  17. # Bring up a stack, in steps so we can inject IPs everywhere
  18. docker-compose up -d npm-pdns npm-pdns-db
  19. PDNS_IP=$(get_container_ip 'npm-pdns')
  20. echo -e "${BLUE}❯ ${YELLOW}PDNS IP is ${PDNS_IP}${RESET}"
  21. # adjust the dnsrouter config
  22. LOCAL_DNSROUTER_CONFIG="$DIR/../docker/dev/dnsrouter-config.json"
  23. rm -rf "$LOCAL_DNSROUTER_CONFIG.tmp"
  24. # IMPORTANT: changes to dnsrouter-config.json will affect this line:
  25. jq --arg a "$PDNS_IP" '.servers[0].upstreams[1].upstream = $a' "$LOCAL_DNSROUTER_CONFIG" > "$LOCAL_DNSROUTER_CONFIG.tmp"
  26. # dnsrouter
  27. docker-compose up -d npm-dnsrouter
  28. DNSROUTER_IP=$(get_container_ip 'npm-dnsrouter')
  29. echo -e "${BLUE}❯ ${YELLOW}DNS Router IP is ${DNSROUTER_IP}${RESET}"
  30. # mount the resolver
  31. LOCAL_RESOLVE="$DIR/../docker/dev/resolv.conf"
  32. rm -rf "${LOCAL_RESOLVE}"
  33. printf "nameserver %s\noptions ndots:0" "${DNSROUTER_IP}" > "${LOCAL_RESOLVE}"
  34. # bring things up, but only what we haven't already created
  35. docker-compose up -d --remove-orphans --force-recreate --build npm npm-pebble npm-stepca npm-swagger
  36. if [ "$1" == "-f" ]; then
  37. echo -e "${BLUE}❯ ${YELLOW}Following Backend Container:${RESET}"
  38. docker logs -f npm.dev
  39. else
  40. echo -e "${YELLOW}Tip:${RESET} You can follow the output of some of the containers with:"
  41. echo " docker logs -f npm.dev"
  42. echo -e "${YELLOW}Tip:${RESET} Open a database terminal with:"
  43. echo " ./scripts/sqlite"
  44. fi
  45. else
  46. echo -e "${RED}❯ docker-compose command is not available${RESET}"
  47. fi