diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5099812 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,46 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib +cmd/versitygw/versitygw +/versitygw + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Go workspace file +go.work + +# ignore IntelliJ directories +.idea + +# auto generated VERSION file +VERSION + +# build output +/versitygw.spec +/versitygw.spec.in +*.tar +*.tar.gz +**/rand.data +/profile.txt + +dist/ + +# Release config files +/.github + +# Docker configuration files +*Dockerfile +/docker-compose.yml + +# read files +/LICENSE +/NOTICE +/CODE_OF_CONDUCT.md +/README.md \ No newline at end of file diff --git a/.env.dev b/.env.dev new file mode 100644 index 0000000..72a9eeb --- /dev/null +++ b/.env.dev @@ -0,0 +1,4 @@ +POSIX_PORT= +PROXY_PORT= +ACCESS_KEY_ID= +SECRET_ACCESS_KEY= \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..23830a7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM golang:1.20-alpine + +WORKDIR /app + +COPY go.mod ./ +RUN go mod download + +COPY ./ ./ + +WORKDIR /app/cmd/versitygw +RUN go build -o versitygw + +RUN mkdir /tmp/vgw + +ENTRYPOINT [ "./versitygw" ] \ No newline at end of file diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..f335d20 --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,13 @@ +FROM golang:1.20 + +WORKDIR /app + +COPY go.mod ./ +RUN go mod download + +COPY ./ ./ + +RUN mkdir /tmp/vgw + +RUN go get github.com/githubnemo/CompileDaemon +RUN go install github.com/githubnemo/CompileDaemon \ No newline at end of file diff --git a/Makefile b/Makefile index 81509c9..97f7220 100644 --- a/Makefile +++ b/Makefile @@ -74,3 +74,18 @@ dist: $(BIN).spec rm -f VERSION rm -f $(BIN).spec gzip -f $(TARFILE) + +# Creates and runs S3 gateway instance in a docker container +.PHONY: up-posix +up-posix: + docker compose up posix + +# Creates and runs S3 gateway proxy instance in a docker container +.PHONY: up-proxy +up-proxy: + docker compose up proxy + +# Creates and runs both S3 gateway and proxy server instances in docker containers +.PHONY: up-app +up-app: + docker compose --env-file .env.dev up diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..481771c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,20 @@ +version: "3" +services: + posix: + build: + context: . + dockerfile: ./Dockerfile.dev + volumes: + - ./:/app + ports: + - "${POSIX_PORT}:${POSIX_PORT}" + command: ["sh", "-c", CompileDaemon -build="go build -C ./cmd/versitygw -o versitygw" -command="./cmd/versitygw/versitygw -p :$POSIX_PORT -a $ACCESS_KEY_ID -s $SECRET_ACCESS_KEY --iam-dir /tmp/vgw posix /tmp/vgw"] + proxy: + build: + context: . + dockerfile: ./Dockerfile.dev + volumes: + - ./:/app + ports: + - "${PROXY_PORT}:${PROXY_PORT}" + command: ["sh", "-c", CompileDaemon -build="go build -C ./cmd/versitygw -o versitygw" -command="./cmd/versitygw/versitygw -a $ACCESS_KEY_ID -s $SECRET_ACCESS_KEY -p :$PROXY_PORT s3 --endpoint http://posix:$POSIX_PORT"]