diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e660fd9 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +bin/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..46571a3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM golang:1.17-alpine AS Build + +COPY . /code +WORKDIR /code + +RUN go env -w GO111MODULE="on" \ + && go build -o easyhttpd main.go + +FROM alpine:3.14 + +COPY --from=Build /code/easyhttpd /usr/local/bin/easyhttpd + +RUN chmod +x /usr/local/bin/easyhttpd \ + && addgroup www \ + && adduser -D -H -G www http \ + && mkdir -p /srv/www \ + && chown -R http.www /srv/www + +USER http + +EXPOSE 8008 + +ENTRYPOINT ["easyhttpd"] +CMD ["-r", "/srv/www"] \ No newline at end of file diff --git a/README.md b/README.md index 499cf77..32fd406 100644 --- a/README.md +++ b/README.md @@ -26,4 +26,14 @@ easyhttpd.exe -r ./ -p :8888 - [x] run cmd open - [x] file read and write - [x] host ip address -- [x] multi platform cross compilation \ No newline at end of file +- [x] multi platform cross compilation + +## Docker镜像 + +### 构建容器镜像 + +`docker image build -t /easyhttpd: .` + +### 使用容器运行 + +`docker container run -t -v :/srv/www -p 8008:8008 /easyhttpd:` \ No newline at end of file