diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000000000000000000000000000000000000..f860d2cfd9c81325361dac8a69fdbe278da3d739
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,2 @@
+# Database directory
+mainnetdb/
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..6e89c3877298ef67819487b7b9082f04ad83af4f
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,35 @@
+# we need to use alpine to build since cgo is required
+FROM golang:1.12-alpine AS build
+RUN apk add --no-cache git gcc g++
+
+# Set the current Working Directory inside the container
+RUN mkdir /goshimmer
+WORKDIR /goshimmer
+
+# Download dependencies
+COPY go.mod . 
+COPY go.sum .
+RUN go mod download
+
+# Copy everything from the current directory to the PWD(Present Working Directory) inside the container
+COPY . .
+
+# Build
+RUN CGO_ENABLED=1 GOOS=linux go build -o /go/bin/goshimmer
+
+FROM alpine:latest  
+
+RUN apk --no-cache add ca-certificates
+
+WORKDIR /root/
+
+VOLUME /root/mainnetdb
+
+EXPOSE 14666/tcp
+EXPOSE 14626/udp
+EXPOSE 14626/tcp
+
+# Copy the Pre-built binary file from the previous stage
+COPY --from=build /go/bin/goshimmer .
+
+ENTRYPOINT ["./goshimmer"]