12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #!/usr/bin/env bash
- #
- # A script to build and run the Swarm development environment using Docker.
- set -e
- ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
- # DEFAULT_NAME is the default name for the Docker image and container
- DEFAULT_NAME="swarm-dev"
- usage() {
- cat >&2 <<USAGE
- usage: $0 [options]
- Build and run the Swarm development environment.
- Depends on Docker being installed locally.
- OPTIONS:
- -n, --name NAME Docker image and container name [default: ${DEFAULT_NAME}]
- -d, --docker-args ARGS Custom args to pass to 'docker run' (e.g. '-p 8000:8000' to expose a port)
- -h, --help Show this message
- USAGE
- }
- main() {
- local name="${DEFAULT_NAME}"
- local docker_args=""
- parse_args "$@"
- build_image
- run_image
- }
- parse_args() {
- while true; do
- case "$1" in
- -h | --help)
- usage
- exit 0
- ;;
- -n | --name)
- if [[ -z "$2" ]]; then
- echo "ERROR: --name flag requires an argument" >&2
- exit 1
- fi
- name="$2"
- shift 2
- ;;
- -d | --docker-args)
- if [[ -z "$2" ]]; then
- echo "ERROR: --docker-args flag requires an argument" >&2
- exit 1
- fi
- docker_args="$2"
- shift 2
- ;;
- *)
- break
- ;;
- esac
- done
- if [[ $# -ne 0 ]]; then
- usage
- echo "ERROR: invalid arguments" >&2
- exit 1
- fi
- }
- build_image() {
- docker build --tag "${name}" "${ROOT}/swarm/dev"
- }
- run_image() {
- exec docker run \
- --privileged \
- --interactive \
- --tty \
- --rm \
- --hostname "${name}" \
- --name "${name}" \
- --volume "${ROOT}:/go/src/github.com/ethereum/go-ethereum" \
- --volume "/var/run/docker.sock:/var/run/docker.sock" \
- ${docker_args} \
- "${name}" \
- /bin/bash
- }
- main "$@"
|