Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Sebarkan projek go berdasarkan imej Docker (contoh terperinci)

Sebarkan projek go berdasarkan imej Docker (contoh terperinci)

WBOY
WBOYke hadapan
2022-02-10 17:54:044838semak imbas

Artikel ini membawa anda pengetahuan yang berkaitan tentang menggunakan projek Go berdasarkan imej docker, termasuk isu yang berkaitan dengan menulis program web GoLang dan menyusun pakej di bawah Linux. Saya harap ia akan membantu semua orang.

Sebarkan projek go berdasarkan imej Docker (contoh terperinci)

Pengetahuan kebergantungan

  • Pergi asas kompilasi silang
  • Asas Docker
  • Asas imej tersuai fail Docker
  • Asas menulis fail orkestra-komposisi Docker

tentu saja, anda boleh mengikuti langkah ini untuk menyelesaikan penggunaan walaupun anda tidak tahu sama sekali. masalah kecil di tengah, anda tidak akan tahu bagaimana untuk menyelesaikannya. Sudah tentu anda juga boleh meninggalkan mesej.

Saya membangun dan menguji pada persekitaran mac Jika anda menggunakan tingkap, mungkin terdapat beberapa perbezaan, tetapi sepatutnya tiada masalah besar.

1. Persekitaran kebergantungan

  • Docker

2 Tulis program web GoLang

Saya akan menulis satu di sini Program hello world yang paling mudah, port mendengar ialah port 80.
Cipta fail main.go baharu dengan kandungan berikut:

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

3 Susun ke dalam pakej program di bawah Linux

Saya membangunkannya pada mac dan perlu menggunakannya. pergi. Kompilasi silang, jika anda tidak biasa dengan kompilasi silang, anda boleh menyemak dokumentasi, atau terus menyalin arahan saya di bawah untuk menyusun.
Kami mahu menjalankannya dalam Docker, berdasarkan imej golang, jadi kami perlu menyusunnya menjadi program yang serasi dengan pemproses i386.

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

Selepas kompilasi ini selesai, akan ada satu lagi program main di dalam negara, jadi biarkan sahaja buat sementara waktu.

4. Gunakan Dockerfile untuk menyesuaikan imej program go kami

Buat folder baharu, buat fail Dockerfile baharu di dalamnya dan kemudian buat dua app baharu dan script dalam dokumen itu. Letakkan program main dalam langkah sebelumnya ke dalam folder app, dan buat fail skrip script baharu dalam build.sh Abaikan kandungan fail itu buat masa ini, saya akan membincangkannya kemudian.
Struktur fail khusus adalah seperti berikut.

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

Berikut adalah untuk menulis kandungan fail Dockerfile saya akan kodkan kandungannya dahulu:

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

Terangkan di sini:

    <.>
  • Dari mana imej itu disepadukan Program go kami secara rasminya menyediakan imej seperti FROM, yang boleh kami gunakan secara langsung. golang
  • Untuk melindungi nama ini. MAINTAINER
  • Direktori berfungsi. WORKDIR
  • Ini ialah arahan salin yang menyalin semua fail tempatan ke direktori kerja. COPY
  • Ini ialah port yang dibangunkan oleh pihak lain Saya membuka port 80 secara lalai Ini boleh diubah suai mengikut situasi sebenar EXPOSE
  • Jalankan arahan dengan parameter Saya menulisnya seperti ini, ia adalah Untuk melaksanakan skrip CMD apabila imej bermula, arahan untuk memulakan program pergi ditulis dalam skrip ini. script/build.sh Di sini saya tampal kandungan:
#!/usr/bin/env bash
cd /go/src/app/ && ./main
Hanya dua baris ini.

5. Susun imej kita sendiri

Ini milik pengetahuan

, saya akan tampal arahan. Docker

docker build -t go-web .
    Arahan ini dilaksanakan jika imej
  • tidak wujud secara setempat, ia akan pergi ke perpustakaan imej rasmi dahulu untuk menarik imej dan kemudian kita boleh menunggu untuk dia secara senyap. golang
  • Parameter ini ialah nama imej kompilasi terakhir anda. Anda boleh mengubah suainya sesuka hati atau menambah nombor versi seperti: go-web. go-web:v1

Sebarkan projek go berdasarkan imej Docker (contoh terperinci)

Apabila anda melihat output di atas, ini bermakna kompilasi berjaya dan terdapat imej bernama

dalam imej tempatan anda. Anda boleh menggunakan go-web untuk bertanya: docker images

Sebarkan projek go berdasarkan imej Docker (contoh terperinci)

6. Menulis fail

docker-compose.yml

Ini adalah langkah terakhir untuk kita jika kita hanya menyusun dengan

untuk menjalankan program go kami: go-web

version: &#39;2&#39;networks:
  basic:services:
  world:
    container_name: world
    image: go-web
    ports:
      - "8099:80"
    volumes:
      - ./app/go/world:/go/src/app:rw
    networks:
      - basic
Pada ketika ini fail orkestra kami telah ditulis Sekarang kami hanya perlu menggunakan

untuk memulakan fail orkestrasi kami adalah sebagai berikut :docker-compose

docker-compose -f docker-compose.yml up -d world
Jika gesaan berikut dikeluarkan, ini bermakna permulaan berjaya.

Creating world ... done
Selepas permulaan berjaya, anda boleh menggunakan

docker ps
untuk menyemak sama ada permulaan itu berjaya.

Sekarang lawati

untuk mengakses program go kami. http://127.0.0.1:8099

Pembelajaran yang disyorkan: "

tutorial video buruh pelabuhan"

Atas ialah kandungan terperinci Sebarkan projek go berdasarkan imej Docker (contoh terperinci). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam