Wir haben eine Entwicklungsumgebung mit Dokcer erstellt, wenn wir Go und Gin verwenden. Ich benutze Docker-Compose. Die verwendete Datenbank ist MySQL, und der OR-Mapper übernimmt die Verwendung von Gorm.
TL;DR Es hat die folgende Verzeichnisstruktur. Es ist Dockerfile und docker-compose.yml.
** Verzeichnisaufbau **
├── docker
│ ├── docker.mysql.env
│ └── go
│ └── Dockerfile
├── docker-compose.yml
└── src
└── app
docker/go/Dockerfile
FROM golang:1.10.3-alpine3.8
COPY src/app /go/src/app/
WORKDIR /go/src/app/
RUN apk update \
&& apk add --no-cache git \
&& go get github.com/gin-gonic/gin \
&& go get github.com/jinzhu/gorm \
&& go get github.com/go-sql-driver/mysql
EXPOSE 8080
docker/docker.mysql.env
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=go-gin-app
MYSQL_USER=root
MYSQL_PASSWORD=password
docker-compose.yml
services:
app:
container_name: app
build:
context: .
dockerfile: ./docker/go/Dockerfile
ports:
- 3000:3000
links:
- database
tty:
true
volumes:
- ./src/app:/go/src/app
database:
restart: always
image: mysql:5.7
ports:
- 3308:3306
volumes:
- mysql-datavolume:/var/lib/mysql
env_file:
- docker/docker.mysql.env
volumes:
mysql-datavolume:
driver: local
Dockerfile
Dieses Mal erstellen wir nur eine Go Docker-Datei und MySQL gibt in docker-compose.yml an, dass das Basis-Image verwendet werden soll.
FROM golang:1.10.3-alpine3.8
COPY src/app /go/src/app/
WORKDIR /go/src/app/
RUN apk update \
&& apk add --no-cache git \
&& go get github.com/gin-gonic/gin \
&& go get github.com/jinzhu/gorm \
&& go get github.com/go-sql-driver/mysql
EXPOSE 8080
Die Datei direkt unter "src / app" wird als Volume angegeben.
Da das Basis-Image von Aliphine angegeben ist, werden Gin- und Gorm-bezogene Pakete mit apk installiert.
docker-compose.yml
services:
app:
container_name: app
build:
context: .
dockerfile: ./docker/go/Dockerfile
ports:
- 3000:3000
links:
- database
tty:
true
volumes:
- ./src/app:/go/src/app
database:
restart: always
image: mysql:5.7
ports:
- 3307:3306
volumes:
- mysql-datavolume:/var/lib/mysql
env_file:
- docker/docker.mysql.env
volumes:
mysql-datavolume:
driver: local
Ich habe eine separate MySQL-Env-Datei erstellt, geben Sie sie also mit "env_file" an.
Port 3306
wird häufig von lokalem MySQL verwendet, daher wird 3307
angegeben.
Erstellen Sie main.go direkt unter "src / app" und schreiben Sie den Code, um die vertraute Hallo-Welt auszugeben.
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}
Geben Sie dann hallo world mit dem folgenden Befehl aus.
docker-compose exec app go run main.go
Wurde Hallo Welt ausgegeben?
Es war überraschend einfach, eine Go + Gin-Umgebung aufzubauen.
Schließlich erleichtert die Verwendung von Docker das Erstellen einer Umgebung!
Recommended Posts