[Go + Gin] Ich habe versucht, eine Docker-Umgebung zu erstellen

Einführung

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

Kommentar

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.

Funktionsprüfung

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?

Am Ende

Es war überraschend einfach, eine Go + Gin-Umgebung aufzubauen.

Schließlich erleichtert die Verwendung von Docker das Erstellen einer Umgebung!

Recommended Posts

[Go + Gin] Ich habe versucht, eine Docker-Umgebung zu erstellen
Erstellen Sie mit Docker eine Go-Umgebung
Ich möchte eine Python-Umgebung erstellen
Ich habe versucht, eine Super-Resolution-Methode / ESPCN zu erstellen
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe versucht, eine Super-Resolution-Methode / SRCNN build zu erstellen
Ich habe versucht, eine Mac Python-Entwicklungsumgebung mit pythonz + direnv zu erstellen
So erstellen Sie eine Django (Python) -Umgebung auf Docker
Ich habe versucht, eine Umgebung mit WSL + Ubuntu + VS-Code in einer Windows-Umgebung zu erstellen
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich habe versucht, eine Serverumgebung zu erstellen, die unter Windows 10 ausgeführt wird
So erstellen Sie eine Sphinx-Übersetzungsumgebung
Als ich versuchte, eine Rails-Umgebung auf WSL2 (Ubuntu 20.04LTS) zu erstellen, stolperte ich und fiel hin.
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Ich habe eine Web-API erstellt
Ich habe versucht, mit Docker einen Dienst aufzubauen, der maschinell erlernte Daten mit explosiver Geschwindigkeit verkauft
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
Ich habe ein Systemkonfigurationsdiagramm mit Diagrams on Docker geschrieben
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Ich habe versucht, eine zufällige Zeichenfolge zu generieren
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe versucht zu debuggen.
Flutter in Docker - Erstellen und Verwenden einer Flutter-Entwicklungsumgebung in einem Docker-Container
Ich habe versucht, mit Raspberry Pi 4 eine Umgebung von Ubuntu 20.04 LTS + ROS2 zu erstellen
Als ich versuchte, mit Python eine virtuelle Umgebung zu erstellen, funktionierte dies nicht
Ich habe eine Burgsuch-API mit Elasticsearch + Sudachi + Go + Echo erstellt
Ich habe versucht, einen "verdammt großen Literaturkonverter" zu machen.
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Ich habe versucht, eine ML-Pipeline mit Cloud Composer zu erstellen
CTF-Anfänger haben versucht, einen Problemserver (Web) zu erstellen [Problem]
So erstellen Sie eine Entwicklungsumgebung für TensorFlow (1.0.0) (Mac)
Ich habe CPython eine Funktion hinzugefügt (Build & Structure Grasp)
Erstellen Sie eine Entwicklungsumgebung mit Poetry Django Docker Pycharm
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen
Erstellen Sie mit Docker eine einfache Fast API-Entwicklungsumgebung
[Django] Verwenden Sie VS Code + Remote-Container, um schnell eine Entwicklungsumgebung für Django-Container (Docker) zu erstellen.
Memo Ein Anfänger hat versucht, eine Java-Umgebung zu erstellen und unter Ubuntu 18.04.2 LTS ins Japanische zu übersetzen.
Ich habe versucht, mit Python (Mac OS X) eine Umgebung für maschinelles Lernen zu erstellen.
Ich habe versucht, PredNet zu lernen
Ich habe versucht, SVM zu organisieren.
Erstellen Sie eine LAMP-Umgebung [CentOS 7]
Ich habe versucht, PCANet zu implementieren
Ich habe versucht, Linux wieder einzuführen
Erstellen Sie eine maschinelle Lernumgebung
Ich habe versucht, Pylint vorzustellen
Ich habe versucht, SparseMatrix zusammenzufassen
Erstellen Sie die Python-Umgebung offline
Umweltbau, Build -Go-
jupyter ich habe es berührt
Ich habe versucht, StarGAN (1) zu implementieren.
Ich habe versucht, mit Quantx eine Linie mit gleitendem Durchschnitt des Volumens zu implementieren