add docker-compose run
This commit is contained in:
parent
14ac7ce698
commit
91b1ccdc46
@ -3,5 +3,4 @@ WORKDIR /app/dtm
|
|||||||
RUN go env -w GO111MODULE=on
|
RUN go env -w GO111MODULE=on
|
||||||
RUN go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
|
RUN go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
ENV IS_DOCKER 1
|
|
||||||
CMD [ "/bin/bash", "-c", "go build app/main.go && /app/dtm/main" ]
|
CMD [ "/bin/bash", "-c", "go build app/main.go && /app/dtm/main" ]
|
||||||
|
|||||||
@ -43,7 +43,7 @@ DTM是首款golang的分布式事务管理器,优雅的解决了幂等、空
|
|||||||
`cp conf.sample.yml conf.yml # 修改conf.yml`
|
`cp conf.sample.yml conf.yml # 修改conf.yml`
|
||||||
|
|
||||||
### 启动并运行saga示例
|
### 启动并运行saga示例
|
||||||
`go run app/main.go`
|
`go run app/main.go saga`
|
||||||
|
|
||||||
# 开始使用
|
# 开始使用
|
||||||
|
|
||||||
|
|||||||
16
app/main.go
16
app/main.go
@ -24,12 +24,8 @@ func main() {
|
|||||||
}
|
}
|
||||||
app := examples.BaseAppNew()
|
app := examples.BaseAppNew()
|
||||||
examples.BaseAppSetup(app)
|
examples.BaseAppSetup(app)
|
||||||
if len(os.Args) == 1 || os.Args[1] == "saga" { // 默认情况下,展示saga例子
|
if len(os.Args) == 1 || os.Args[1] == "dtmsvr" { // 只启动dtmsvr
|
||||||
dtmsvr.PopulateMysql()
|
go dtmsvr.MainStart()
|
||||||
dtmsvr.MainStart()
|
|
||||||
examples.SagaSetup(app)
|
|
||||||
examples.BaseAppStart(app)
|
|
||||||
examples.SagaFireRequest()
|
|
||||||
} else if os.Args[1] == "xa" { // 启动xa示例
|
} else if os.Args[1] == "xa" { // 启动xa示例
|
||||||
dtmsvr.PopulateMysql()
|
dtmsvr.PopulateMysql()
|
||||||
dtmsvr.MainStart()
|
dtmsvr.MainStart()
|
||||||
@ -37,8 +33,12 @@ func main() {
|
|||||||
examples.XaSetup(app)
|
examples.XaSetup(app)
|
||||||
examples.BaseAppStart(app)
|
examples.BaseAppStart(app)
|
||||||
examples.XaFireRequest()
|
examples.XaFireRequest()
|
||||||
} else if os.Args[1] == "dtmsvr" { // 只启动dtmsvr
|
} else if os.Args[1] == "saga" { // 启动saga示例
|
||||||
go dtmsvr.MainStart()
|
dtmsvr.PopulateMysql()
|
||||||
|
dtmsvr.MainStart()
|
||||||
|
examples.SagaSetup(app)
|
||||||
|
examples.BaseAppStart(app)
|
||||||
|
examples.SagaFireRequest()
|
||||||
} else if os.Args[1] == "all" { // 运行所有示例
|
} else if os.Args[1] == "all" { // 运行所有示例
|
||||||
dtmsvr.PopulateMysql()
|
dtmsvr.PopulateMysql()
|
||||||
examples.PopulateMysql()
|
examples.PopulateMysql()
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package common
|
|||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@ -88,9 +89,10 @@ func (op *tracePlugin) Initialize(db *gorm.DB) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetDsn(conf map[string]string) string {
|
func GetDsn(conf map[string]string) string {
|
||||||
if IsDocker() {
|
if IsDockerCompose() {
|
||||||
conf["host"] = strings.Replace(conf["host"], "localhost", "host.docker.internal", 1)
|
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"])
|
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"])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -188,7 +188,7 @@ func init() {
|
|||||||
// RestyClient.SetRetryCount(2)
|
// RestyClient.SetRetryCount(2)
|
||||||
// RestyClient.SetRetryWaitTime(1 * time.Second)
|
// RestyClient.SetRetryWaitTime(1 * time.Second)
|
||||||
RestyClient.OnBeforeRequest(func(c *resty.Client, r *resty.Request) error {
|
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)
|
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)
|
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()
|
return runtime.FuncForPC(pc).Name()
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsDocker() bool {
|
func IsDockerCompose() bool {
|
||||||
return os.Getenv("IS_DOCKER") != ""
|
return os.Getenv("IS_DOCKER_COMPOSE") != ""
|
||||||
}
|
}
|
||||||
|
|||||||
22
compose.yml
22
compose.yml
@ -1,5 +1,13 @@
|
|||||||
version: '3.3'
|
version: '3.3'
|
||||||
services:
|
services:
|
||||||
|
api:
|
||||||
|
build: .
|
||||||
|
environment:
|
||||||
|
IS_DOCKER_COMPOSE: '1'
|
||||||
|
ports:
|
||||||
|
- '80:4005'
|
||||||
|
volumes:
|
||||||
|
- .:/app/dtm
|
||||||
mysql:
|
mysql:
|
||||||
image: 'mysql:5.7'
|
image: 'mysql:5.7'
|
||||||
environment:
|
environment:
|
||||||
@ -13,17 +21,3 @@ services:
|
|||||||
]
|
]
|
||||||
ports:
|
ports:
|
||||||
- '3306:3306'
|
- '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'
|
|
||||||
Loading…
x
Reference in New Issue
Block a user