


Bereitstellen 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.
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
文件,再在里面新建app
,script
两个文件。把上一步的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
。
看到上面这个输出,就说明编译成功了,在你的本地镜像里面就有了一个名为go-web
的镜像。可以使用 docker images
进行查询:
六、编写 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:8099
rrreee
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 i386
kompatibel ist > Prozessor.
rrreee
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 app
darin >, 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-web
Dieser 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
. 🎜🎜🎜🎜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: 🎜
🎜🎜 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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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.

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.

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.

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

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

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.

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.
