Inhaltsverzeichnis
Abhängige Kenntnisse
1. Abhängig von der Umgebung
2. Schreiben Sie ein GoLang-Webprogramm
三、编译成linux下的程序包
四、使用 Dockerfile 定制我们go程序的镜像
五、编译我们自己的镜像
六、编写 docker-compose.yml 文件
Heim Betrieb und Instandhaltung Docker Bereitstellen von Go-Projekten basierend auf Docker-Images (detaillierte Beispiele)

Bereitstellen von Go-Projekten basierend auf Docker-Images (detaillierte Beispiele)

Feb 10, 2022 pm 05:54 PM
docker

Dieser Artikel vermittelt Ihnen relevantes Wissen über die Bereitstellung von Go-Projekten basierend auf Docker-Images, einschließlich Fragen im Zusammenhang mit dem Schreiben von GoLang-Webprogrammen und dem Kompilieren von Paketen unter Linux. Ich hoffe, dass er für alle hilfreich ist.

Bereitstellen von Go-Projekten basierend auf Docker-Images (detaillierte Beispiele)

Abhängige Kenntnisse

  • Go-Cross-Compilation-Grundlagen
  • Docker-Grundlagen
  • Dockerfile-Benutzerdefiniertes-Image-Grundlagen
  • Docker-Compose-Orchestrierungsdatei-Schreibgrundlagen

Natürlich können Sie diesen Schritt zum Bereitstellen befolgen, aber vielleicht Wenn es dazwischen ein kleines Problem gibt und Sie nicht wissen, wie Sie es lösen können, können Sie natürlich auch eine Nachricht hinterlassen.

Ich habe in einer Mac-Umgebung entwickelt und getestet. Wenn Sie Windows verwenden, gibt es möglicherweise einen kleinen Unterschied, aber es sollte kein großes Problem sein.

1. Abhängig von der Umgebung

  • Docker

2. Schreiben Sie ein GoLang-Webprogramm

Ich werde hier das einfachste Hallo-Welt-Programm schreiben.
Erstellen Sie eine neue main.go-Datei mit folgendem Inhalt: main.go文件,内容如下:

package mainimport (
    "fmt"
    "log"
    "net/http")func sayHello(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "hello world")}func main() {
    http.HandleFunc("/", sayHello)//注册URI路径与相应的处理函数
    log.Println("【默认项目】服务启动成功 监听端口 80")
    er := http.ListenAndServe("0.0.0.0:80", nil)
    if er != nil {
        log.Fatal("ListenAndServe: ", er)
    }}
Nach dem Login kopieren

三、编译成linux下的程序包

我是在mac上开发的,需要用到go的交叉编译,如果对交叉编译不熟悉的,可以查下文档,或者直接复制我下面的命令进行编译。
我们是要跑在Docker里面,基础 golang这个镜像跑的,所以需要把他编译成兼容 i386 处理器的程序。

sudo env GOOS=linux GOARCH=386 go build main.go
Nach dem Login kopieren

这个编译完成后,本地会多出一个 main 程序,暂时不用管它备用就行。

四、使用 Dockerfile 定制我们go程序的镜像

新建一个文件夹,里面新建一个Dockerfile文件,再在里面新建appscript两个文件。把上一步的main程序放到app文件夹里面,在script里面新建一个build.sh脚本文件,文件内容先不管,等下会说。
具体的文件结构是这样。

.
├── Dockerfile
├── app
│   └── main
└── script
    └── build.sh
Nach dem Login kopieren

下面就是编写Dockerfile文件内容了,内容我先上代码:

FROM golang
MAINTAINER  青羽
WORKDIR /go/src/COPY . .EXPOSE 80CMD ["/bin/bash", "/go/src/script/build.sh"]
Nach dem Login kopieren

这里解释下:

  • FROM 是集成自哪个镜像,我们是go程序官方提供了一个golang这样的镜像,我们可以直接使用。
  • MAINTAINER 是维护这名字。
  • WORKDIR 工作目录。
  • COPY 这是一个复制命令,把本地的所有文件复制到工作目录下。
  • EXPOSE 这是对方开发的端口,我默认是开放80端口,这里可根据实际情况修改
  • CMD 执行一个带参数的命令,我这样写,是为了让镜像启动时去执行script/build.sh的脚本,这个脚本里面是写的启动go程序的命令。
    这里我把内容粘贴出来:
#!/usr/bin/env bash
cd /go/src/app/ && ./main
Nach dem Login kopieren

就这两行。

五、编译我们自己的镜像

这属于Docker的知识了,我把命令粘贴出来。

docker build -t go-web .
Nach dem Login kopieren
  • 这个命令执行,如果本地没有 golang 这个镜像的话,他会自己先去官方镜像库拉取这个镜像再编译,我们静静的等他就行。
  • go-web这个参数是你最后编译后的镜像名字,可以随意修改,也可以加上版本号比如: go-web:v1

Bereitstellen von Go-Projekten basierend auf Docker-Images (detaillierte Beispiele)

看到上面这个输出,就说明编译成功了,在你的本地镜像里面就有了一个名为go-web的镜像。可以使用 docker images 进行查询:

Bereitstellen von Go-Projekten basierend auf Docker-Images (detaillierte Beispiele)

六、编写 docker-compose.yml 文件

到这里属于我们的最后一步了,如果用我们刚编译的go-web来运行我们的go程序:

version: '2'networks:
  basic:services:
  world:
    container_name: world
    image: go-web
    ports:
      - "8099:80"
    volumes:
      - ./app/go/world:/go/src/app:rw
    networks:
      - basic
Nach dem Login kopieren

到这里我们的编排文件已经写好了,现在只需要用docker-compose来启动我们的编排文件就好,启动命令如下:

docker-compose -f docker-compose.yml up -d world
Nach dem Login kopieren

如果输出下面的提示,说明启动成功了。

Creating world ... done
Nach dem Login kopieren

启动成功后你可以再用

docker ps
Nach dem Login kopieren

来查看下是否启动成功了。

现在访问http://127.0.0.1:8099rrreee

3. Kompilieren Sie sie in ein Programmpaket unter Linux.

Ich habe sie auf einem Mac entwickelt und muss die Go-Cross-Kompilierung verwenden. Wenn dies der Fall ist Wenn Sie mit der Kreuzkompilierung nicht vertraut sind, können Sie die Dokumentation überprüfen oder meinen Befehl unten zum Kompilieren direkt kopieren. Wir möchten es in Docker ausführen und das grundlegende golang-Image wird ausgeführt, daher muss es in ein Programm kompiliert werden, das mit i386kompatibel ist > Prozessor.
rrreee

Nachdem diese Kompilierung abgeschlossen ist, wird es lokal ein zusätzliches Hauptprogramm geben. Lassen Sie es einfach vorerst in Ruhe. 🎜🎜4. Verwenden Sie Dockerfile, um das Image unseres Go-Programms anzupassen. 🎜🎜Erstellen Sie einen neuen Ordner, erstellen Sie darin eine neue Dockerfile-Datei und erstellen Sie dann einen neuen appdarin >, script zwei Dateien. Legen Sie das main-Programm aus dem vorherigen Schritt in den Ordner app und erstellen Sie ein neues build.sh-Skript in script Datei, der Inhalt der Datei ist mir im Moment egal, ich werde später darüber sprechen. 🎜 Die spezifische Dateistruktur ist wie folgt. 🎜rrreee🎜Das Folgende ist der Inhalt der Dockerfile-Datei. Ich werde zuerst den Code schreiben: 🎜rrreee🎜Hier ist die Erklärung: 🎜🎜🎜Welcher Spiegel ist der FROM integriert von? Wir sind Das go-Programm stellt offiziell ein Bild wie golang zur Verfügung, das wir direkt verwenden können. 🎜🎜MAINTAINER soll diesen Namen pflegen. 🎜🎜WORKDIR Arbeitsverzeichnis. 🎜🎜COPY Dies ist ein Kopierbefehl, der alle lokalen Dateien in das Arbeitsverzeichnis kopiert. 🎜🎜EXPOSE Dies ist der von der anderen Partei entwickelte Port. Standardmäßig öffne ich Port 80. Dies kann entsprechend der tatsächlichen Situation geändert werden 🎜🎜CMD Zur Ausführung Ein Befehl mit Parametern, den ich so schreibe, besteht darin, das Skript script/build.sh auszuführen, wenn das Image startet. Dieses Skript enthält den Befehl zum Starten des Go-Programms. 🎜 Ich füge den Inhalt hier ein: 🎜🎜rrreee🎜 Nur diese beiden Zeilen. 🎜🎜5. Kompilieren Sie unser eigenes Image🎜🎜Dies gehört zum Wissen von Docker, ich werde den Befehl einfügen. 🎜rrreee🎜🎜Dieser Befehl wird ausgeführt, wenn lokal kein golang-Bild vorhanden ist, um das Bild abzurufen und es dann zu kompilieren. 🎜🎜go-webDieser Parameter ist der Name Ihres zuletzt kompilierten Bildes. Sie können ihn nach Belieben ändern oder eine Versionsnummer hinzufügen, wie zum Beispiel: go-web:v1. 🎜🎜

Bereitstellen von Go-Projekten basierend auf Docker-Images (detaillierte Beispiele)🎜🎜Siehe oben Die Ausgabe bedeutet, dass die Kompilierung erfolgreich war und in Ihrem lokalen Bild ein Bild mit dem Namen go-web vorhanden ist. Sie können docker images verwenden, um Folgendes abzufragen: 🎜

Bereitstellen von Go-Projekten basierend auf Docker-Images (detaillierte Beispiele)🎜🎜 6. Schreiben Sie die Datei docker-compose.yml🎜🎜Dies ist unser letzter Schritt. Wenn wir das gerade kompilierte go-web, um unser Go-Programm auszuführen: 🎜rrreee🎜Unsere Orchestrierungsdatei wurde hier geschrieben. Jetzt müssen wir nur noch <code>docker-compose verwenden, um unsere Orchestrierungsdatei zu starten:🎜 rrreee🎜Wenn die folgende Eingabeaufforderung ausgegeben wird, bedeutet dies, dass der Start erfolgreich war. 🎜rrreee🎜Nachdem der Start erfolgreich war, können Sie mit 🎜rrreee🎜 überprüfen, ob der Start erfolgreich war. 🎜🎜Besuchen Sie jetzt http://127.0.0.1:8099, um auf unser Go-Programm zuzugreifen. 🎜🎜Empfohlenes Lernen: „🎜Docker-Video-Tutorial🎜“🎜🎜

Das obige ist der detaillierte Inhalt vonBereitstellen von Go-Projekten basierend auf Docker-Images (detaillierte Beispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie Docker Desktop So verwenden Sie Docker Desktop Apr 15, 2025 am 11:45 AM

Wie benutze ich Docker Desktop? Docker Desktop ist ein Werkzeug zum Ausführen von Docker -Containern auf lokalen Maschinen. Zu den zu verwendenden Schritten gehören: 1.. Docker Desktop installieren; 2. Start Docker Desktop; 3.. Erstellen Sie das Docker -Bild (mit Dockerfile); 4. Build Docker Image (mit Docker Build); 5. Docker -Container ausführen (mit Docker Run).

So lesen Sie die Docker -Version So lesen Sie die Docker -Version Apr 15, 2025 am 11:51 AM

Um die Docker -Version zu erhalten, können Sie die folgenden Schritte ausführen: Führen Sie den Befehl Docker "Docker --version" aus, um die Client- und Serverversionen anzuzeigen. Für Mac oder Windows können Sie auch Versionsinformationen über die Registerkarte Version der Docker -Desktop -GUI oder das Menü Docker Desktop anzeigen.

So ändern Sie die Docker -Bildquelle in China So ändern Sie die Docker -Bildquelle in China Apr 15, 2025 am 11:30 AM

Sie können zur Quelle der Inlandsspiegel wechseln. Die Schritte sind wie folgt: 1. Bearbeiten Sie die Konfigurationsdatei /etc/docker/daemon.json und fügen Sie die Spiegelquellenadresse hinzu; 2. Starten Sie den Docker Service Sudo SystemCtl Docker neu, um die Download -Geschwindigkeit und -stabilität des Bilddownloads zu verbessern.

So erstellen Sie einen Spiegel in Docker So erstellen Sie einen Spiegel in Docker Apr 15, 2025 am 11:27 AM

Schritte zum Erstellen eines Docker -Images: Schreiben Sie eine Dockerfile, die die Build -Anweisungen enthält. Erstellen Sie das Bild im Terminal mit dem Befehl Docker Build. Markieren Sie das Bild und weisen Sie Namen und Tags mit dem Befehl Docker Tag zu.

So aktualisieren Sie das Bild von Docker So aktualisieren Sie das Bild von Docker Apr 15, 2025 pm 12:03 PM

Die Schritte zur Aktualisierung eines Docker -Images sind wie folgt: Ziehen Sie das neueste Bild -Tag. Neues Bild Löschen Sie das alte Bild für ein bestimmtes Tag (optional) den Container neu (falls erforderlich) neu starten Sie neu (falls erforderlich).

So sehen Sie Protokolle von Docker So sehen Sie Protokolle von Docker Apr 15, 2025 pm 12:24 PM

Zu den Methoden zum Anzeigen von Docker -Protokollen gehören: Verwenden des Befehls docker Protokolle, z. cat /var/log/container_name.log Verwenden Sie den Befehl docker-compose-Protokolle von Docker Compose, zum Beispiel: Docker-compose -f Docker-com

So speichern Sie das Docker -Bild So speichern Sie das Docker -Bild Apr 15, 2025 am 11:54 AM

Um das Bild in Docker zu speichern, können Sie den Befehl docker comit verwenden, um ein neues Bild zu erstellen, das den aktuellen Status des angegebenen Containers Syntax: Docker Commit [Optionen] Container -ID -Bildname enthält. Um das Bild im Repository zu speichern, können Sie den Befehl Docker Push, Syntax: Docker -Push -Bildname [: Tag] verwenden. Um gespeicherte Bilder zu importieren, können Sie den Befehl Docker Pull, Syntax: Docker Pull Bildname [: Tag] verwenden.

So erstellen Sie ein privates Repository von Docker So erstellen Sie ein privates Repository von Docker Apr 15, 2025 am 11:06 AM

Sie können Docker -private Repositorys erstellen, um Containerbilder sicher zu speichern und zu verwalten und strenge Kontrolle und Sicherheit bereitzustellen. Zu den Schritten gehören: Erstellen eines Repositorys, Gewährung von Zugriff, Bereitstellung eines Repositorys, Drückens eines Bildes und Ziehen eines Bildes. Zu den Vorteilen gehören Sicherheit, Versionskontrolle, reduzierter Netzwerkverkehr und Anpassung.

See all articles