diff --git a/.gitignore b/.gitignore index f998f72f..47fed302 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,8 @@ .idea .vscode out + +server/docs/docker-compose +server/config.yml + +mayfly-go.log diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..b2beeec4 --- /dev/null +++ b/Dockerfile @@ -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"] diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..02d1c850 --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ + +docker: + docker build . -t mayfly-go diff --git a/server/docker-compose.yaml b/docker-compose.yaml similarity index 55% rename from server/docker-compose.yaml rename to docker-compose.yaml index 48cc46e2..4ec7fe5d 100644 --- a/server/docker-compose.yaml +++ b/docker-compose.yaml @@ -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 diff --git a/server/Dockerfile b/server/Dockerfile deleted file mode 100644 index 6c8289a5..00000000 --- a/server/Dockerfile +++ /dev/null @@ -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"] diff --git a/server/config.yml.example b/server/config.yml.example index f63f30e2..7128c345 100644 --- a/server/config.yml.example +++ b/server/config.yml.example @@ -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信息用于缓存权限码、验证码、公私钥等