Heim > Fragen und Antworten > Hauptteil
Ich habe ein Buch befolgt und einen API-Server erstellt. Hier ist das Projekt. Nachdem das Projekt gestartet und lokal ausgeführt wurde mongod
来启动 MongoDB 是可以连接的。但是当我打包 Server 成 docker 后(docker build -t taskmanager .
),并且用容器启动这个 Server(docker run --publish 8080:8080 taskmanager
), weiß ich nicht wie zuvor, wie ich eine Verbindung zur Datenbank herstellen soll. Ich weiß nicht, ob ich die Docker-Datei falsch geschrieben habe oder ob der Port nicht richtig eingestellt ist, und ich bin mit Docker nicht sehr vertraut.
// 连接 mongodb
func createDbSession() {
var err error
session, err = mgo.DialWithInfo(&mgo.DialInfo{
Addrs: []string{"127.0.0.1"},
Username: "",
Password: "",
Timeout: 60 * time.Second,
})
if err != nil {
log.Fatalf("[createDbSession]: %s\n", err)
}
}
// 报错
$ docker run --publish 8080:8080 taskmanager
2017/04/25 13:37:59 [createDbSession]: no reachable servers
Docker-Datei:
# golang image where workspace (GOPATH) configured at /go.
FROM golang
# Copy the local package files to the conainer's workspace
ADD . /go/src/github.com/Latias94/taskmanager
# Setting up working directory
WORKDIR /go/src/github.com/Latias94/taskmanager
# Get godeps for managing and restoring dependencies
RUN go get github.com/tools/godep
# Restore godep dependencies
RUN godep restore
# Build the taskmanager command inside the container.
RUN go install github.com/Latias94/taskmanager
# Run the taskmanager command when the container starts.
ENTRYPOINT /go/bin/taskmanager
# Service listens on port 8080.
EXPOSE 8080
Soll ich die Datenbank auch in Docker einbinden? Oder stimmt etwas mit der Art und Weise, wie ich Docker starte, nicht? Der Port von Mongodb ist der Standard. 27017
,项目如果成功启动打开会显示404。godep restore
Projektabhängigkeiten können installiert werden.
Update:
func createDbSession() {
var err error
// 改为 mgo.Dial
session, err = mgo.Dial(AppConfig.MongoDBHost) // "mongo:27017"
if err != nil {
log.Fatalf("[GetSession]: %s\n", err)
}
if err != nil {
log.Fatalf("[createDbSession]: %s\n", err)
}
}
docker build -t taskmanager .
Probieren Sie den Link nach dem Erstellen aus
$ docker run -it --link mongodb:mongo --name taskmanager2 taskmanager --publish 8080:8080
2017/04/26 13:17:07 Listening...
Jetzt kann es gestartet werden, aber localhost:8080
Ich kann das Projekt nicht sehen und ich kann die Serveradresse nicht finden.
Ich habe vor, in den nächsten Tagen „Das erste Docker-Buch“ zu lesen und dann wieder vorbeizuschauen dieses Problem.
Vielen Dank an die Antwortenden.