Skip to content

Commit ea9e3d2

Browse files
committed
编写dockerfile启动脚本
编辑shell启动脚本
1 parent dc62599 commit ea9e3d2

File tree

7 files changed

+115
-16
lines changed

7 files changed

+115
-16
lines changed

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
static/uploadfile
55
main.exe
66
go-admin
7+
go-admin.exe
78
temp/
89
!temp
910
vendor
1011
config/settings.dev.yml
11-
go-admin
1212
common/middleware/demo.go
1313
config/settings.dev.*.yml
1414
config/settings.dev.*.yml.log

Dockerfile

+15-14
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
11
FROM golang:alpine as builder
22

3-
MAINTAINER lwnmengjing
3+
MAINTAINER haimait
44

5-
ENV GOPROXY https://goproxy.cn/
5+
WORKDIR /work
66

7-
WORKDIR /go/release
8-
#RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
9-
RUN apk update && apk add tzdata
7+
RUN go env -w GOPROXY=https://goproxy.cn,direct && go env -w CGO_ENABLED=0
8+
COPY go.mod go.sum ./
9+
RUN go mod download
1010

11-
COPY go.mod ./go.mod
12-
RUN go mod tidy
1311
COPY . .
14-
RUN pwd && ls
12+
RUN go build -o go-admin main.go
1513

16-
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -a -installsuffix cgo -o go-admin .
1714

18-
FROM alpine
15+
FROM alpine:latest
16+
# change timezone
17+
RUN apk add --no-cache tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
1918

20-
COPY --from=builder /go/release/go-admin /
19+
WORKDIR /go-admin-api
2120

22-
COPY --from=builder /go/release/config/settings.yml /config/settings.yml
21+
COPY --from=builder /work/go-admin ./
22+
COPY --from=builder /work/config ./config
23+
COPY --from=builder /work/static ./static
24+
COPY --from=builder /work/temp ./temp
2325

24-
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2526

2627
EXPOSE 8000
2728

28-
CMD ["/go-admin","server","-c", "/config/settings.yml"]
29+
CMD ["./go-admin","server","-c", "config/settings.dev.yml"]

Dockerfilebak

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
FROM golang:alpine as builder
2+
3+
MAINTAINER lwnmengjing
4+
5+
ENV GOPROXY https://goproxy.cn/
6+
7+
WORKDIR /go/release
8+
#RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
9+
RUN apk update && apk add tzdata
10+
11+
COPY go.mod ./go.mod
12+
RUN go mod tidy
13+
COPY . .
14+
RUN pwd && ls
15+
16+
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -a -installsuffix cgo -o go-admin .
17+
18+
FROM alpine
19+
20+
COPY --from=builder /go/release/go-admin /
21+
22+
COPY --from=builder /go/release/config/settings.yml /config/settings.yml
23+
24+
COPY --from=builder /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
25+
26+
EXPOSE 8000
27+
28+
CMD ["/go-admin","server","-c", "/config/settings.yml"]

Makefile

+39-1
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,52 @@ PROJECT:=go-admin
33
.PHONY: build
44
build:
55
CGO_ENABLED=0 go build -ldflags="-w -s" -a -installsuffix -o go-admin .
6+
7+
# make build-linux
68
build-linux:
7-
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -a -installsuffix -o go-admin .
9+
@docker build -t go-admin:latest .
10+
@echo "build successful"
11+
812
build-sqlite:
913
go build -tags sqlite3 -ldflags="-w -s" -a -installsuffix -o go-admin .
14+
15+
# make run
16+
run:
17+
# delete go-admin-api container
18+
@if [ $(shell docker ps -aq --filter name=go-admin --filter publish=8000) ]; then docker rm -f go-admin; fi
19+
20+
# 启动方法一 run go-admin-api container docker-compose 启动方式
21+
# 进入到项目根目录 执行 make run 命令
22+
@docker-compose up -d
23+
24+
# 启动方式二 docker run 这里注意-v挂载的宿主机的地址改为部署时的实际决对路径
25+
#@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
26+
27+
@echo "go-admin service is running..."
28+
29+
# delete Tag=<none> 的镜像
30+
@docker image prune -f
31+
@docker ps -a | grep "go-admin"
32+
33+
stop:
34+
# delete go-admin-api container
35+
@if [ $(shell docker ps -aq --filter name=go-admin --filter publish=8000) ]; then docker-compose down; fi
36+
#@if [ $(shell docker ps -aq --filter name=go-admin --filter publish=8000) ]; then docker rm -f go-admin; fi
37+
#@echo "go-admin stop success"
38+
39+
1040
#.PHONY: test
1141
#test:
1242
# go test -v ./... -cover
1343

1444
#.PHONY: docker
1545
#docker:
1646
# docker build . -t go-admin:latest
47+
48+
# make deploy
49+
deploy:
50+
51+
#@git checkout master
52+
#@git pull origin master
53+
make build-linux
54+
make run

docker-compose.yml

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
version: '3.8'
2+
services:
3+
go-admin-api:
4+
container_name: go-admin
5+
image: go-admin:latest
6+
privileged: true
7+
restart: always
8+
ports:
9+
- 8000:8000
10+
volumes:
11+
- ./config/:/go-admin-api/config/
12+
- ./static/:/go-admin-api/static/
13+
- ./temp/:/go-admin-api/temp/
14+
networks:
15+
- myweb
16+
networks:
17+
myweb:
18+
driver: bridge
19+

restart.sh

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/bash
2+
echo "go build"
3+
go mod tidy
4+
go build -o go-admin main.go
5+
echo "kill go-admin service"
6+
killall go-admin # kill go-admin service
7+
nohup ./go-admin server -c=config/settings.dev.yml >> access.log 2>&1 & #后台启动服务将日志写入access.log文件
8+
echo "run go-admin success"
9+
ps -aux | grep go-admin

stop.sh

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/bin/bash
2+
killall go-admin # kill go-admin service
3+
echo "stop go-admin success"
4+
ps -aux | grep go-admin

0 commit comments

Comments
 (0)