add docker-compose run

This commit is contained in:
yedongfu 2021-07-10 22:18:12 +08:00
parent 14ac7ce698
commit 91b1ccdc46
6 changed files with 23 additions and 28 deletions

View File

@ -3,5 +3,4 @@ WORKDIR /app/dtm
RUN go env -w GO111MODULE=on
RUN go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
EXPOSE 8080
ENV IS_DOCKER 1
CMD [ "/bin/bash", "-c", "go build app/main.go && /app/dtm/main" ]

View File

@ -43,7 +43,7 @@ DTM是首款golang的分布式事务管理器优雅的解决了幂等、空
`cp conf.sample.yml conf.yml # 修改conf.yml`
### 启动并运行saga示例
`go run app/main.go`
`go run app/main.go saga`
# 开始使用

View File

@ -24,12 +24,8 @@ func main() {
}
app := examples.BaseAppNew()
examples.BaseAppSetup(app)
if len(os.Args) == 1 || os.Args[1] == "saga" { // 默认情况下展示saga例子
dtmsvr.PopulateMysql()
dtmsvr.MainStart()
examples.SagaSetup(app)
examples.BaseAppStart(app)
examples.SagaFireRequest()
if len(os.Args) == 1 || os.Args[1] == "dtmsvr" { // 只启动dtmsvr
go dtmsvr.MainStart()
} else if os.Args[1] == "xa" { // 启动xa示例
dtmsvr.PopulateMysql()
dtmsvr.MainStart()
@ -37,8 +33,12 @@ func main() {
examples.XaSetup(app)
examples.BaseAppStart(app)
examples.XaFireRequest()
} else if os.Args[1] == "dtmsvr" { // 只启动dtmsvr
go dtmsvr.MainStart()
} else if os.Args[1] == "saga" { // 启动saga示例
dtmsvr.PopulateMysql()
dtmsvr.MainStart()
examples.SagaSetup(app)
examples.BaseAppStart(app)
examples.SagaFireRequest()
} else if os.Args[1] == "all" { // 运行所有示例
dtmsvr.PopulateMysql()
examples.PopulateMysql()

View File

@ -3,6 +3,7 @@ package common
import (
"database/sql"
"fmt"
"os"
"regexp"
"strings"
"time"
@ -88,9 +89,10 @@ func (op *tracePlugin) Initialize(db *gorm.DB) (err error) {
}
func GetDsn(conf map[string]string) string {
if IsDocker() {
if IsDockerCompose() {
conf["host"] = strings.Replace(conf["host"], "localhost", "host.docker.internal", 1)
}
logrus.Printf("is docker: %t IS_DOCKER_COMPOSE: %s and conf host: %s", IsDockerCompose(), os.Getenv("IS_DOCKER_COMPOSE"), conf["host"])
return fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=true&loc=Local", conf["user"], conf["password"], conf["host"], conf["port"], conf["database"])
}

View File

@ -188,7 +188,7 @@ func init() {
// RestyClient.SetRetryCount(2)
// RestyClient.SetRetryWaitTime(1 * time.Second)
RestyClient.OnBeforeRequest(func(c *resty.Client, r *resty.Request) error {
if IsDocker() {
if IsDockerCompose() {
r.URL = strings.Replace(r.URL, "localhost", "host.docker.internal", 1)
}
logrus.Printf("requesting: %s %s %v %v", r.Method, r.URL, r.Body, r.QueryParam)
@ -273,6 +273,6 @@ func GetFuncName() string {
return runtime.FuncForPC(pc).Name()
}
func IsDocker() bool {
return os.Getenv("IS_DOCKER") != ""
func IsDockerCompose() bool {
return os.Getenv("IS_DOCKER_COMPOSE") != ""
}

View File

@ -1,5 +1,13 @@
version: '3.3'
services:
api:
build: .
environment:
IS_DOCKER_COMPOSE: '1'
ports:
- '80:4005'
volumes:
- .:/app/dtm
mysql:
image: 'mysql:5.7'
environment:
@ -13,17 +21,3 @@ services:
]
ports:
- '3306:3306'
services:
dtm:
image: 'mysql:5.7'
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
TZ: Asia/shanghai
command:
[
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
'--default-time-zone=+8:00',
]
ports:
- '3306:3306'