Skip to content

Commit

Permalink
refactor: adjust project structure for docker and command-lines (aran…
Browse files Browse the repository at this point in the history
  • Loading branch information
jjeffcaii authored Apr 24, 2022
1 parent 6b074ad commit 9d024e2
Show file tree
Hide file tree
Showing 20 changed files with 332 additions and 242 deletions.
31 changes: 31 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
### Go template
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary, built with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Dependency directories (remove the comment below to include it)
bin/
vendor/
dist/

scripts/
docs/

/docker-compose.yaml
.golangci.yml
.licenserc.yaml
.pre-commit-config.yaml
.github/
justfile
Makefile
README*.md

5 changes: 4 additions & 1 deletion .licenserc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,10 @@ header: # `header` section is configurations for source codes license header.
- '.gitmodules'
- 'Makefile'
- 'justfile'
- 'docker'
- 'conf/**'
- '.dockerignore'
- 'Dockerfile'
- 'docker-compose.yaml'
- 'pkg/resolver/mysql/constants.go' # with two license: apache and Vitess
- 'pkg/resolver/mysql/encoding.go'
- 'pkg/resolver/mysql/sql_error.go'
Expand Down
35 changes: 35 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# builder layer
FROM golang:1.16-alpine AS builder

RUN apk add --no-cache upx

WORKDIR /app

COPY ./go.mod ./
COPY ./go.sum ./

RUN go mod download

COPY . .

# use upx, the binary size is as smaller as better when running as a side-car.
RUN mkdir ./bin && \
go build -ldflags "-X main.Version=`cat VERSION` -extldflags \"-static\" -s -w" -o ./bin/arana ./cmd && \
upx -9 -o ./bin/arana-upx ./bin/arana && \
mv ./bin/arana-upx ./bin/arana

# runtime layer
FROM alpine:3

WORKDIR /

RUN mkdir -p /etc/arana

VOLUME /etc/arana

EXPOSE 13306

COPY --from=builder /app/bin/arana /usr/local/bin/
COPY ./conf/* /etc/arana/

CMD ["arana", "start", "-c", "/etc/arana/bootstrap.yaml"]
10 changes: 4 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,11 @@ build dist/arana dist/arana-sha-256:
CGO_ENABLED=0 go build $(GO_FLAGS) -o ./dist/arana ./cmd
sha256sum ./dist/arana | cut -d ' ' -f 1 > ./dist/arana-sha-256

docker-build: build
docker build -f docker/Dockerfile -t arana:latest .
docker-build:
docker build -t aranadb/arana:latest .

integration-test: build docker-build
@mkdir -p docker/data
@mkdir -p docker/mysqld
docker-compose -f docker/docker-compose.yaml up -d
integration-test: docker-build
docker-compose up -d
@sleep 30
@go clean -testcache
go test -tags integration -v ./test/...
Expand Down
39 changes: 39 additions & 0 deletions cmd/cmds/cmds.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package cmds

import (
"github.com/spf13/cobra"
)

var _handlers []Handler

// Handler represents the command handler.
type Handler func(cmd *cobra.Command)

// Handle handles the main command.
func Handle(input Handler) {
_handlers = append(_handlers, input)
}

// Do process the root command with handlers.
func Do(cmd *cobra.Command) {
for _, it := range _handlers {
it(cmd)
}
}
27 changes: 26 additions & 1 deletion cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,31 @@

package main

import (
"github.com/spf13/cobra"
)

import (
"github.com/arana-db/arana/cmd/cmds"

// load sub-commands
_ "github.com/arana-db/arana/cmd/start"
_ "github.com/arana-db/arana/cmd/tools"
)

var (
Version = "0.1.0"
)

func main() {
Execute()
rootCommand := &cobra.Command{
Use: "arana",
Short: "arana is a db proxy server",
Version: Version,
}

// initialize sub commands
cmds.Do(rootCommand)

_ = rootCommand.Execute()
}
107 changes: 0 additions & 107 deletions cmd/start.go

This file was deleted.

Loading

0 comments on commit 9d024e2

Please sign in to comment.