suchen
HeimBetrieb und InstandhaltungDockerBereitstellen von Go-Projekten basierend auf Docker-Images (detaillierte Beispiele)

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)
    }}

三、编译成linux下的程序包

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

sudo env GOOS=linux GOARCH=386 go build main.go

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

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

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

.
├── Dockerfile
├── app
│   └── main
└── script
    └── build.sh

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

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

这里解释下:

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

就这两行。

五、编译我们自己的镜像

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

docker build -t go-web .
  • 这个命令执行,如果本地没有 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

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

docker-compose -f docker-compose.yml up -d world

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

Creating world ... done

启动成功后你可以再用

docker ps

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

现在访问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!

Stellungnahme
Dieser Artikel ist reproduziert unter:CSDN. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Docker: Containerisierungsanwendungen für Portabilität und SkalierbarkeitDocker: Containerisierungsanwendungen für Portabilität und SkalierbarkeitApr 16, 2025 am 12:09 AM

Docker ist ein technologiebasiertes Linux-Container-Tool, das zum Verpacken, Verteilen und Ausführen von Anwendungen verwendet wird, um die Anwendungsportabilität und Skalierbarkeit zu verbessern. 1) Befehle mit Dockerbuild und Dockerrun können zum Erstellen und Ausführen von Docker -Containern verwendet werden. 2) DockerComponpose wird verwendet, um Multi-Container-Docker-Anwendungen zu definieren und auszuführen, um die Microservice-Management zu vereinfachen. 3) Durch die Verwendung mehrstufiger Konstruktion können Sie die Bildgröße optimieren und die Antrags-Startgeschwindigkeit verbessern. 4) Die Anzeigen von Containerprotokollen ist eine effektive Möglichkeit, Containerprobleme zu debugieren.

So starten Sie einen Container von DockerSo starten Sie einen Container von DockerApr 15, 2025 pm 12:27 PM

Startschritte des Docker -Containers: Ziehen Sie das Containerbild: Führen Sie "Docker Pull [Mirror Name]" aus. Erstellen eines Containers: Verwenden Sie "Docker erstellen [Optionen] [Spiegelname] [Befehle und Parameter]". Starten Sie den Container: Führen Sie "Docker Start [Container Name oder ID]" aus. Containerstatus überprüfen: Stellen Sie sicher, dass der Container mit "Docker PS" ausgeführt wird.

So sehen Sie Protokolle von DockerSo sehen Sie Protokolle von DockerApr 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 überprüfen Sie den Namen des Docker -ContainersSo überprüfen Sie den Namen des Docker -ContainersApr 15, 2025 pm 12:21 PM

Sie können den Namen des Docker -Containers abfragen, indem Sie den Schritten folgen: Alle Container auflisten (Docker PS). Filtern Sie die Containerliste (unter Verwendung des GREP -Befehls). Ruft den Containernamen ab (befindet sich in der Spalte "Namen").

So erstellen Sie Container für DockerSo erstellen Sie Container für DockerApr 15, 2025 pm 12:18 PM

Erstellen Sie einen Container in Docker: 1. Ziehen Sie das Bild: Docker Pull [Spiegelname] 2. Erstellen Sie einen Container: Docker Ausführen [Optionen] [Spiegelname] [Befehl] 3. Starten Sie den Container: Docker Start [Containername]

So verlassen Sie den Container mit DockerSo verlassen Sie den Container mit DockerApr 15, 2025 pm 12:15 PM

Vier Möglichkeiten zum Beenden von Docker Container: Verwenden Sie Strg D im Befehl Container Terminal ENGEBOT IM Container Terminal verwenden Sie Docker Stop & lt; container_name & gt; Befehl verwenden Sie Docker Kill & lt; container_name & gt; Befehl im Host -Terminal (Force Exit)

So kopieren Sie Dateien in Docker nach außenSo kopieren Sie Dateien in Docker nach außenApr 15, 2025 pm 12:12 PM

Methoden zum Kopieren von Dateien in externen Hosts in Docker: Verwenden Sie den Befehl Docker CP: Docker CP [Optionen] & lt; Containerpfad & gt; & lt; Host -Pfad & gt;. Verwenden von Datenvolumina: Erstellen Sie ein Verzeichnis auf dem Host und verwenden Sie den Parameter -V, um das Verzeichnis in den Container zu montieren, um den Container zu erstellen, um eine bidirektionale Dateisynchronisation zu erreichen.

So starten Sie MySQL von DockerSo starten Sie MySQL von DockerApr 15, 2025 pm 12:09 PM

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen

See all articles

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)
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.