[NOD-95] Added docker file and scripts to run dev instances for debugging (#241)

* [NOD-95] Added docker file and scripts to run dev instances for debugging

* [NOD-95] Enabled debugging from dockers

* [NOD-95] Removed redundant entrypoint.sh file

* [NOD-95] Removed multi-stage build artifacts from Dockerfile.dev

* [NOD-95] Add --help to run-dev.sh
This commit is contained in:
Svarog 2019-04-03 12:46:00 +03:00 committed by Ori Newman
parent ba03d512f3
commit 67358d1e85
3 changed files with 117 additions and 8 deletions

25
docker/Dockerfile.dev Normal file
View File

@ -0,0 +1,25 @@
FROM golang:1.12-alpine
ENV PATH="${GOPATH}/bin:${PATH}"
RUN mkdir -p /go/src/github.com/daglabs/btcd
WORKDIR /go/src/github.com/daglabs/btcd
RUN apk add --no-cache curl git openssh binutils gcc musl-dev tini bash
# Allow delve to run on Alpine based containers.
RUN apk add --no-cache libc6-compat
RUN curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
RUN go get github.com/derekparker/delve/cmd/dlv
COPY ./Gopkg.* ./
RUN dep ensure -v -vendor-only
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -gcflags "all=-N -l" -a -installsuffix cgo -o btcd .
ENTRYPOINT [ "/sbin/tini", "--" ]

View File

@ -1,26 +1,71 @@
version: '3'
services:
first:
image: 956501169541.dkr.ecr.us-east-1.amazonaws.com/btcd:latest
image: btcd:latest
security_opt:
- apparmor=unconfined
cap_add:
- SYS_PTRACE
command: [
"btcd",
"./btcd",
"--testnet",
"--addrindex",
"--generate",
# "--generate",
"--nodnsseed",
"--miningaddr=dagtest:qrm4zaetvny2yuh4wudf8y43fd20lunkxs8quragg8",
"--rpcuser=user",
"--rpcpass=pass",
"--rpclisten=0.0.0.0:18334",
"--rpccert=docker/rpc.cert",
"--rpckey=docker/rpc.key"
"--rpccert=/go/src/github.com/daglabs/btcd/docker/rpc.cert",
"--rpckey=/go/src/github.com/daglabs/btcd/docker/rpc.key"
]
ports: ["18334:18334"]
second:
image: 956501169541.dkr.ecr.us-east-1.amazonaws.com/btcd:latest
image: btcd:latest
links: ["first"]
security_opt:
- apparmor=unconfined
cap_add:
- SYS_PTRACE
command: [
"btcd",
"./btcd",
"--testnet",
"--addrindex",
"--connect=first"
"--connect=first",
"--rpcuser=user",
"--rpcpass=pass",
"--miningaddr=dagtest:qrm4zaetvny2yuh4wudf8y43fd20lunkxs8quragg8",
"--rpclisten=0.0.0.0:18334",
"--rpccert=/go/src/github.com/daglabs/btcd/docker/rpc.cert",
"--rpckey=/go/src/github.com/daglabs/btcd/docker/rpc.key"
]
ports: ["18335:18334"]
second-debug:
image: btcd:latest
links: ["first"]
security_opt:
- apparmor=unconfined
cap_add:
- SYS_PTRACE
command: [
"dlv",
"--listen=:40000",
"--api-version=2",
"--headless=true",
"exec",
"./btcd",
"--",
# here starts btcd parameters
"--testnet",
"--addrindex",
"--connect=first",
"--rpcuser=user",
"--rpcpass=pass",
"--miningaddr=dagtest:qrm4zaetvny2yuh4wudf8y43fd20lunkxs8quragg8",
"--rpclisten=0.0.0.0:18334",
"--rpccert=/go/src/github.com/daglabs/btcd/docker/rpc.cert",
"--rpckey=/go/src/github.com/daglabs/btcd/docker/rpc.key"
]
ports: ["18335:18334", "40000:40000"]

39
run-dev.sh Executable file
View File

@ -0,0 +1,39 @@
#!/bin/bash
# This is a short script that compiles the code inside a docker container, and runs two instances connected to each other
# docker defenition is in docker/Dockerfile.dev
# instances defenition is in docker/docker-compose.yml
set -e
if [[ $* == *--help* ]]
then
echo "Usage:"
echo -e "\t./run-def.sh [--rm] [--debug]"
echo ""
echo -e "\t--rm\t\tRemove dockers prior to running them, to clear data"
echo -e "\t--debug\t\tEnable debugging on second server. Server will not start until debugger is attached"
exit
fi
export SERVICE_NAME=btcd
export GIT_COMMIT=$(git rev-parse --short=12 HEAD)
docker build -t "${SERVICE_NAME}:${GIT_COMMIT}" . \
-f docker/Dockerfile.dev \
|| fatal 'Failed to build the docker image'
docker tag "${SERVICE_NAME}:${GIT_COMMIT}" "${SERVICE_NAME}:latest"
cd docker
if [[ $* == *--rm* ]]
then
docker-compose rm -f
fi
if [[ $* == *--debug* ]]
then
docker-compose up first second-debug
else
docker-compose up first second
fi