ci: 优化镜像构建和docker compose

This commit is contained in:
王一之
2023-07-22 01:43:01 +08:00
parent 0f596a712d
commit 6da8d7fd67
6 changed files with 53 additions and 35 deletions

5
.gitignore vendored
View File

@@ -19,3 +19,8 @@
.idea
.vscode
out
server/docs/docker-compose
server/config.yml
mayfly-go.log

38
Dockerfile Normal file
View File

@@ -0,0 +1,38 @@
# 构建前端资源
FROM node:18-alpine3.16 as fe-builder
WORKDIR /mayfly
COPY mayfly_go_web .
RUN yarn
RUN yarn build
# 构建后端资源
FROM golang:1.20-alpine3.16 as be-builder
ENV GOPROXY https://goproxy.cn
WORKDIR /mayfly
# Copy the go source for building server
COPY server .
RUN go mod download
COPY --from=fe-builder /mayfly/dist /mayfly/static/static
# Build
RUN GO111MODULE=on CGO_ENABLED=0 GOOS=linux \
go build -a \
-o mayfly-go main.go
FROM alpine:3.16
RUN apk add --no-cache ca-certificates bash expat
WORKDIR /mayfly
COPY --from=be-builder /mayfly/mayfly-go /usr/local/bin/mayfly-go
CMD ["mayfly-go"]

3
Makefile Normal file
View File

@@ -0,0 +1,3 @@
docker:
docker build . -t mayfly-go

View File

@@ -2,19 +2,15 @@ version: "3.9"
services:
mysql:
image: "mysql:5.7"
image: "mysql:8"
container_name: mayfly-go-mysql
environment:
MYSQL_ROOT_PASSWORD: 111049
MYSQL_DATABASE: mayfly-go
TZ: Asia/Shanghai
volumes:
- ./docs/docker-compose/mysql/data/mydir:/mydir
- ./docs/docker-compose/mysql/data/datadir:/var/lib/mysql
# 在宿主机编写 /apps/mysql/conf/my.cnf
- ./docs/docker-compose/mysql/my.cnf:/etc/my.cnf
# 数据库还原目录 可将需要还原的sql文件放在这里
- ./docs/docker-compose/mysql/init:/docker-entrypoint-initdb.d
- ./server/docs/docker-compose/mysql/data/mydir:/mydir
- ./server/docs/docker-compose/mysql/data/datadir:/var/lib/mysql
restart: always
server:
@@ -28,6 +24,8 @@ services:
environment:
TZ: Asia/Shanghai
WAIT_HOSTS: mysql:3306
volumes:
- ./server/config.yml.example:/mayfly/config.yml
depends_on:
- mysql
restart: always

View File

@@ -1,26 +0,0 @@
FROM golang:1.19-alpine3.16 as builder
ENV GOPROXY https://goproxy.cn
WORKDIR /mayfly
COPY go.mod go.mod
COPY go.sum go.sum
RUN go mod download
# Copy the go source for building server
COPY . .
# Build
RUN GO111MODULE=on CGO_ENABLED=0 GOOS=linux \
go build -a \
-o mayfly-go main.go
FROM alpine:3.16
RUN apk add --no-cache ca-certificates bash expat
WORKDIR /mayfly
COPY --from=builder /mayfly/config.yml /mayfly/config.yml
COPY --from=builder /mayfly/mayfly-go /usr/local/bin/mayfly-go
CMD ["mayfly-go"]

View File

@@ -20,10 +20,10 @@ aes:
mysql:
# 自动升级数据库
auto-migration: false
host: localhost:3306
host: mysql:3306
username: root
password: 111049
db-name: mayfly_go
db-name: mayfly-go
config: charset=utf8&loc=Local&parseTime=true
max-idle-conns: 5
# 若同时部署多台机器则需要配置redis信息用于缓存权限码、验证码、公私钥等