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.
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.
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) }}
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.
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:
FROM
, yang boleh kami gunakan secara langsung. golang
MAINTAINER
WORKDIR
COPY
EXPOSE
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
, saya akan tampal arahan. Docker
docker build -t go-web .
golang
go-web
. go-web:v1
dalam imej tempatan anda. Anda boleh menggunakan go-web
untuk bertanya: docker images
docker-compose.yml
untuk menjalankan program go kami: go-web
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
untuk memulakan fail orkestrasi kami adalah sebagai berikut :docker-compose
docker-compose -f docker-compose.yml up -d world
Creating world ... done
docker ps
untuk mengakses program go kami. http://127.0.0.1:8099
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!