├── .drone.yml ├── Dockerfile ├── Dockerfile-release ├── Makefile └── app.go /.drone.yml: -------------------------------------------------------------------------------- 1 | pipeline: 2 | build: 3 | image: plugins/docker 4 | repo: docker-http-server 5 | tags: 6 | - 1.0.0 7 | - 1.0 8 | - latest 9 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.6-alpine 2 | RUN mkdir /app 3 | ADD . /app/ 4 | WORKDIR /app 5 | RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main . 6 | CMD ["/app/main"] 7 | 8 | EXPOSE 80 9 | -------------------------------------------------------------------------------- /Dockerfile-release: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | EXPOSE 80 3 | COPY app / 4 | CMD ["/app"] 5 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | NAME = katacoda/docker-http-server 2 | TAG=v1 3 | INSTANCE = scrapbook-http-server 4 | 5 | .PHONY: default build copy debug clean push buildrelease 6 | 7 | default: buildrelease 8 | 9 | build: 10 | docker build -t $(NAME)-dev . 11 | 12 | copy: 13 | docker create --name $(INSTANCE) $(NAME)-dev 14 | docker cp $(INSTANCE):/app/main $(shell pwd)/app 15 | docker rm $(INSTANCE) 16 | 17 | release: 18 | docker build -t $(NAME):$(TAG) -f Dockerfile-release . 19 | docker tag $(NAME):$(TAG) $(NAME):latest 20 | 21 | buildrelease: build copy release 22 | 23 | clean: 24 | docker rm $(INSTANCE) 25 | 26 | debug: 27 | docker run --rm -it --name $(INSTANCE) $(NAME)-dev /bin/bash 28 | 29 | run: 30 | docker run --rm -p 80:80 --name $(INSTANCE) $(NAME) 31 | 32 | dev: 33 | docker run -it --rm -p 80:80 -w /go/src/github.com/$(NAME) -v $(shell pwd)/vendor/github.com/:/go/src/github.com/ -v $(shell pwd):/go/src/github.com/$(NAME) golang:1.6 34 | 35 | push: 36 | docker push $(NAME):$(TAG) 37 | docker push $(NAME):latest 38 | -------------------------------------------------------------------------------- /app.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | "os" 7 | ) 8 | 9 | func handler(w http.ResponseWriter, r *http.Request) { 10 | var name, _ = os.Hostname() 11 | 12 | fmt.Fprintf(w, "