From ea9e3d2fe18d8c093094d8914a9838e0d1d7b631 Mon Sep 17 00:00:00 2001 From: wanghaima Date: Sun, 14 Aug 2022 23:32:58 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E5=86=99dockerfile=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=20=E7=BC=96=E8=BE=91shell=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- Dockerfile | 29 +++++++++++++++-------------- Dockerfilebak | 28 ++++++++++++++++++++++++++++ Makefile | 40 +++++++++++++++++++++++++++++++++++++++- docker-compose.yml | 19 +++++++++++++++++++ restart.sh | 9 +++++++++ stop.sh | 4 ++++ 7 files changed, 115 insertions(+), 16 deletions(-) create mode 100644 Dockerfilebak create mode 100644 docker-compose.yml create mode 100644 restart.sh create mode 100644 stop.sh diff --git a/.gitignore b/.gitignore index ce6fd6bd..4f654db9 100644 --- a/.gitignore +++ b/.gitignore @@ -4,11 +4,11 @@ static/uploadfile main.exe go-admin +go-admin.exe temp/ !temp vendor config/settings.dev.yml -go-admin common/middleware/demo.go config/settings.dev.*.yml config/settings.dev.*.yml.log diff --git a/Dockerfile b/Dockerfile index c5e33a5c..c7e29261 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,28 +1,29 @@ FROM golang:alpine as builder -MAINTAINER lwnmengjing +MAINTAINER haimait -ENV GOPROXY https://goproxy.cn/ +WORKDIR /work -WORKDIR /go/release -#RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories -RUN apk update && apk add tzdata +RUN go env -w GOPROXY=https://goproxy.cn,direct && go env -w CGO_ENABLED=0 +COPY go.mod go.sum ./ +RUN go mod download -COPY go.mod ./go.mod -RUN go mod tidy COPY . . -RUN pwd && ls +RUN go build -o go-admin main.go -RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -a -installsuffix cgo -o go-admin . -FROM alpine +FROM alpine:latest +# change timezone +RUN apk add --no-cache tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone -COPY --from=builder /go/release/go-admin / +WORKDIR /go-admin-api -COPY --from=builder /go/release/config/settings.yml /config/settings.yml +COPY --from=builder /work/go-admin ./ +COPY --from=builder /work/config ./config +COPY --from=builder /work/static ./static +COPY --from=builder /work/temp ./temp -COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /etc/localtime EXPOSE 8000 -CMD ["/go-admin","server","-c", "/config/settings.yml"] \ No newline at end of file +CMD ["./go-admin","server","-c", "config/settings.dev.yml"] diff --git a/Dockerfilebak b/Dockerfilebak new file mode 100644 index 00000000..c5e33a5c --- /dev/null +++ b/Dockerfilebak @@ -0,0 +1,28 @@ +FROM golang:alpine as builder + +MAINTAINER lwnmengjing + +ENV GOPROXY https://goproxy.cn/ + +WORKDIR /go/release +#RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories +RUN apk update && apk add tzdata + +COPY go.mod ./go.mod +RUN go mod tidy +COPY . . +RUN pwd && ls + +RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -a -installsuffix cgo -o go-admin . + +FROM alpine + +COPY --from=builder /go/release/go-admin / + +COPY --from=builder /go/release/config/settings.yml /config/settings.yml + +COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /etc/localtime + +EXPOSE 8000 + +CMD ["/go-admin","server","-c", "/config/settings.yml"] \ No newline at end of file diff --git a/Makefile b/Makefile index 135c7e70..812402bb 100644 --- a/Makefile +++ b/Makefile @@ -3,10 +3,40 @@ PROJECT:=go-admin .PHONY: build build: CGO_ENABLED=0 go build -ldflags="-w -s" -a -installsuffix -o go-admin . + +# make build-linux build-linux: - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -a -installsuffix -o go-admin . + @docker build -t go-admin:latest . + @echo "build successful" + build-sqlite: go build -tags sqlite3 -ldflags="-w -s" -a -installsuffix -o go-admin . + +# make run +run: + # delete go-admin-api container + @if [ $(shell docker ps -aq --filter name=go-admin --filter publish=8000) ]; then docker rm -f go-admin; fi + + # 启动方法一 run go-admin-api container docker-compose 启动方式 + # 进入到项目根目录 执行 make run 命令 + @docker-compose up -d + + # 启动方式二 docker run 这里注意-v挂载的宿主机的地址改为部署时的实际决对路径 + #@docker run --name=go-admin -p 8000:8000 -v /home/code/go/src/go-admin/go-admin/config:/go-admin-api/config -v /home/code/go/src/go-admin/go-admin-api/static:/go-admin/static -v /home/code/go/src/go-admin/go-admin/temp:/go-admin-api/temp -d --restart=always go-admin:latest + + @echo "go-admin service is running..." + + # delete Tag= 的镜像 + @docker image prune -f + @docker ps -a | grep "go-admin" + +stop: + # delete go-admin-api container + @if [ $(shell docker ps -aq --filter name=go-admin --filter publish=8000) ]; then docker-compose down; fi + #@if [ $(shell docker ps -aq --filter name=go-admin --filter publish=8000) ]; then docker rm -f go-admin; fi + #@echo "go-admin stop success" + + #.PHONY: test #test: # go test -v ./... -cover @@ -14,3 +44,11 @@ build-sqlite: #.PHONY: docker #docker: # docker build . -t go-admin:latest + +# make deploy +deploy: + + #@git checkout master + #@git pull origin master + make build-linux + make run \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..41d94dee --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3.8' +services: + go-admin-api: + container_name: go-admin + image: go-admin:latest + privileged: true + restart: always + ports: + - 8000:8000 + volumes: + - ./config/:/go-admin-api/config/ + - ./static/:/go-admin-api/static/ + - ./temp/:/go-admin-api/temp/ + networks: + - myweb +networks: + myweb: + driver: bridge + diff --git a/restart.sh b/restart.sh new file mode 100644 index 00000000..53ea7b58 --- /dev/null +++ b/restart.sh @@ -0,0 +1,9 @@ +#!/bin/bash +echo "go build" +go mod tidy +go build -o go-admin main.go +echo "kill go-admin service" +killall go-admin # kill go-admin service +nohup ./go-admin server -c=config/settings.dev.yml >> access.log 2>&1 & #后台启动服务将日志写入access.log文件 +echo "run go-admin success" +ps -aux | grep go-admin \ No newline at end of file diff --git a/stop.sh b/stop.sh new file mode 100644 index 00000000..6dd9dc43 --- /dev/null +++ b/stop.sh @@ -0,0 +1,4 @@ +#!/bin/bash +killall go-admin # kill go-admin service +echo "stop go-admin success" +ps -aux | grep go-admin \ No newline at end of file