Nous avons construit un environnement de développement utilisant Dokcer lors de l'utilisation de Go et Gin. J'utilise docker-compose. La base de données utilisée est mysql et le mappeur OR suppose l'utilisation de Gorm.
TL;DR Il a la structure de répertoires suivante. Il s'agit de Dockerfile et docker-compose.yml.
** Structure du répertoire **
├── 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
Cette fois, nous ne créerons qu'un fichier Docker et mysql spécifiera dans docker-compose.yml d'utiliser l'image de base.
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
Le fichier directement sous src / app
est spécifié comme volume.
De plus, comme l'image de base d'aliphine est spécifiée, les packages liés à Gin et Gorm sont installés avec apk.
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
J'ai créé un fichier d'environnement mysql séparé, alors spécifiez-le avec ʻenv_file.
Le port 3306 est souvent utilisé par mysql local, donc
3307` est spécifié.
Créez main.go directement sous src / app
et écrivez le code pour afficher le monde familier de Hello
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}
Ensuite, sortez hello world avec la commande suivante.
docker-compose exec app go run main.go
Est-ce que Hello World est sorti?
Il était étonnamment facile de créer un environnement Go + Gin.
Après tout, l'utilisation de Docker facilite la création d'un environnement!
Recommended Posts