start-dev 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/bin/bash -e
  2. DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  3. . "$DIR/.common.sh"
  4. # Ensure docker-compose exists
  5. if hash docker-compose 2>/dev/null; then
  6. cd "${DIR}/.."
  7. echo -e "${BLUE}❯ ${CYAN}Starting Dev Stack ...${RESET}"
  8. echo -e "${BLUE}❯ $(docker-compose config)${RESET}"
  9. # Bring up a stack, in steps so we can inject IPs everywhere
  10. docker-compose up -d pdns pdns-db
  11. PDNS_IP=$(get_container_ip "pdns")
  12. echo -e "${BLUE}❯ ${YELLOW}PDNS IP is ${PDNS_IP}${RESET}"
  13. # adjust the dnsrouter config
  14. LOCAL_DNSROUTER_CONFIG="$DIR/../docker/dev/dnsrouter-config.json"
  15. rm -rf "$LOCAL_DNSROUTER_CONFIG.tmp"
  16. # IMPORTANT: changes to dnsrouter-config.json will affect this line:
  17. jq --arg a "$PDNS_IP" '.servers[0].upstreams[1].upstream = $a' "$LOCAL_DNSROUTER_CONFIG" > "$LOCAL_DNSROUTER_CONFIG.tmp"
  18. docker-compose up -d dnsrouter
  19. DNSROUTER_IP=$(get_container_ip "dnsrouter")
  20. echo -e "${BLUE}❯ ${YELLOW}DNS Router IP is ${DNSROUTER_IP}"
  21. if [ "${DNSROUTER_IP:-}" = "" ]; then
  22. echo -e "${RED}❯ ERROR: DNS Router IP is not set${RESET}"
  23. exit 1
  24. fi
  25. # mount the resolver
  26. LOCAL_RESOLVE="$DIR/../docker/dev/resolv.conf"
  27. rm -rf "${LOCAL_RESOLVE}"
  28. printf "nameserver %s\noptions ndots:0" "${DNSROUTER_IP}" > "${LOCAL_RESOLVE}"
  29. # bring up all remaining containers, except cypress!
  30. docker-compose up -d --remove-orphans stepca squid
  31. docker-compose pull db db-postgres authentik-redis authentik authentik-worker authentik-ldap
  32. docker-compose build --pull --parallel fullstack
  33. docker-compose up -d --remove-orphans fullstack
  34. docker-compose up -d --remove-orphans swagger
  35. # wait for main container to be healthy
  36. bash "$DIR/wait-healthy" "$(docker-compose ps --all -q fullstack)" 120
  37. echo ""
  38. echo -e "${CYAN}Admin UI: http://127.0.0.1:3081${RESET}"
  39. echo -e "${CYAN}Nginx: http://127.0.0.1:3080${RESET}"
  40. echo -e "${CYAN}Swagger Doc: http://127.0.0.1:3001${RESET}"
  41. echo ""
  42. if [ "$1" == "-f" ]; then
  43. echo -e "${BLUE}❯ ${YELLOW}Following Backend Container:${RESET}"
  44. docker logs -f npm2dev.core
  45. else
  46. echo -e "${YELLOW}Hint:${RESET} You can follow the output of some of the containers with:"
  47. echo " docker logs -f npm2dev.core"
  48. fi
  49. else
  50. echo -e "${RED}❯ docker-compose command is not available${RESET}"
  51. fi