[Go + Gin] J'ai essayé de créer un environnement Docker

introduction

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

Commentaire

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é.

Contrôle de fonctionnement

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?

À la fin

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

[Go + Gin] J'ai essayé de créer un environnement Docker
Créer un environnement go à l'aide de Docker
Je veux créer un environnement Python
J'ai essayé de créer une méthode de super résolution / ESPCN
J'ai essayé de créer une méthode de super résolution / SRCNN ①
J'ai essayé de créer une méthode de super résolution / SRCNN ③
J'ai essayé de créer une méthode de super résolution / SRCNN ②
J'ai essayé de créer un environnement de développement Mac Python avec pythonz + direnv
Comment créer un environnement Django (python) sur Docker
J'ai essayé de créer un environnement avec WSL + Ubuntu + VS Code dans un environnement Windows
J'ai essayé de créer un linebot (implémentation)
J'ai essayé de créer un environnement serveur qui fonctionne sous Windows 10
Comment créer un environnement de traduction sphinx
Quand j'ai essayé de créer un environnement Rails sur WSL2 (Ubuntu 20.04LTS), j'ai trébuché et suis tombé.
[Linux] Créer un environnement Jenkins avec Docker
J'ai créé une API Web
J'ai essayé de créer un service qui vend des données apprises par machine à une vitesse explosive avec Docker
[Linux] Construction de l'environnement Docker avec Amazon Linux 2
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
J'ai écrit un diagramme de configuration du système avec des diagrammes sur Docker
[Python] Créer un environnement de développement Django avec Docker
J'ai essayé de générer une chaîne de caractères aléatoire
J'ai créé un jeu ○ ✕ avec TensorFlow
J'ai essayé de déboguer.
Flutter dans Docker - Comment créer et utiliser un environnement de développement Flutter dans un conteneur Docker
J'ai essayé de créer un environnement Ubuntu 20.04 LTS + ROS2 avec Raspberry Pi 4
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
J'ai créé une API de recherche de château avec Elasticsearch + Sudachi + Go + echo
J'ai essayé de faire un "putain de gros convertisseur de littérature"
J'ai essayé d'implémenter un pseudo pachislot en Python
J'ai essayé de créer un pipeline ML avec Cloud Composer
Le débutant de la CTF a tenté de créer un serveur problématique (Web) [Problème]
Comment créer un environnement de développement pour TensorFlow (1.0.0) (Mac)
J'ai ajouté une fonction à CPython (construction et compréhension de la structure)
Créez un environnement de développement avec Poetry Django Docker Pycharm
Comment créer un environnement Python sur Amazon Linux 2
J'ai essayé de dessiner un diagramme de configuration à l'aide de diagrammes
Créer un environnement de développement d'API rapide léger à l'aide de Docker
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) à l'aide de VS Code + Remote Containers
[AWS] J'ai essayé de créer un environnement Python avec un environnement de développement eb [Elastic Beanstalk]
Mémo Un débutant a essayé de créer un environnement Java et de le traduire en japonais sur Ubuntu 18.04.2 LTS.
J'ai essayé de créer un environnement d'apprentissage automatique avec Python (Mac OS X)
J'ai essayé d'apprendre PredNet
J'ai essayé d'organiser SVM.
Créer un environnement LAMP [CentOS 7]
J'ai essayé d'implémenter PCANet
J'ai essayé de réintroduire Linux
Créer un environnement d'apprentissage automatique
J'ai essayé de présenter Pylint
J'ai essayé de résumer SparseMatrix
Créer un environnement Python hors ligne
Construction de l'environnement, construction -Go-
jupyter je l'ai touché
J'ai essayé d'implémenter StarGAN (1)
J'ai essayé d'implémenter une ligne moyenne mobile de volume avec Quantx