亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Jadual Kandungan
1. Gunakan pelbagai peringkat membina untuk imej yang lebih kecil dan selamat
2. Mengoptimumkan Membina Konteks dan Lapisan Caching
3. Membina untuk pengeluaran dengan bendera yang betul
4. Jalankan sebagai pengguna bukan akar untuk keselamatan
5. Digunakan dengan Docker mengarang atau alat orkestrasi
Bonus: Leverage .dockerignore
Rumah pembangunan bahagian belakang Golang Membina dan menggunakan aplikasi Go dengan Docker

Membina dan menggunakan aplikasi Go dengan Docker

Jul 25, 2025 am 04:33 AM
go docker

Gunakan Multi-Stage Docker membina untuk membuat imej kecil dan selamat dengan menyusun binari Go di peringkat pembina dan menyalinnya ke imej runtime yang minimum seperti Alpine Linux, mengurangkan saiz dan permukaan serangan. 2. Mengoptimumkan prestasi membina dengan menyalin go.mod dan go.sum Pertama untuk memanfaatkan caching lapisan docker, memastikan kebergantungan hanya dimuat semula apabila perlu. 3. Membina binari Go dengan bendera pengeluaran termasuk cgo_enabled = 0 untuk kompilasi statik, goos = linux untuk keserasian linux, dan -ldflags = " -s -w" untuk menghilangkan simbol debug dan mengurangkan saiz binari. 4. Jalankan bekas sebagai pengguna bukan akar dengan membuat pengguna berdedikasi dalam imej Docker untuk meminimumkan risiko keselamatan. 5. Deploy menggunakan Docker mengarang untuk pembangunan atau ujian, dan gunakan pendaftaran kontena dengan platform orkestra seperti kubernet atau ECS untuk pengeluaran, memastikan penggunaan yang konsisten merentasi persekitaran. Di samping itu, gunakan fail .dockerignore untuk mengecualikan fail yang tidak perlu seperti aset ujian dan dokumentasi, mengekalkan konteks membina minimum dan meningkatkan kecekapan membina.

Membina dan menggunakan aplikasi Go dengan Docker

Membina dan menggunakan aplikasi GO dengan Docker adalah cara yang kuat untuk memastikan konsistensi di seluruh persekitaran, mengurangkan geseran penggunaan, dan memudahkan pengurusan ketergantungan. Pasangan binari yang disusun secara statik dengan sangat baik dengan model kontena ringan Docker. Inilah caranya dengan berkesan.

Membina dan menggunakan aplikasi Go dengan Docker

1. Gunakan pelbagai peringkat membina untuk imej yang lebih kecil dan selamat

Salah satu amalan terbaik apabila aplikasi Dockerizing Go menggunakan pelbagai peringkat membina . Ini membolehkan anda menyusun binari pergi ke satu peringkat (dengan SDK Go penuh) dan kemudian menyalin hanya binari terakhir ke dalam imej runtime yang minimum.

 # Peringkat 1: Bina Perduaan Pergi
Dari golang: 1.22 sebagai pembina

Workdir /App

# Salin fail mod go dan muat turun dependensi
Salin go.mod go.sum ./
Run Go Mod Muat turun

# Kod sumber salin
Salin. .

# Bina binari (Lumpuhkan CGO untuk kompilasi statik penuh)
Jalankan cgo_enabled = 0 goos = linux go build -a -installsuffix cgo -o main ./cmd/api

# Peringkat 2: Imej runtime yang minimum
Dari Alpine: Terkini
Jalankan APK-Tidak ada CA-Certificates CA
Workdir /root /

# Salin binari dari panggung pembina
Salin -dari = pembina /app /main.

# Dedahkan pelabuhan dan tentukan arahan
Dedahkan 8080
Cmd ["./main"]

Mengapa ini penting:

Membina dan menggunakan aplikasi Go dengan Docker
  • Imej terakhir adalah kecil (selalunya di bawah 30MB).
  • Tidak ada toolchain atau kod sumber dimasukkan dalam pengeluaran.
  • Mengurangkan permukaan serangan dan meningkatkan masa permulaan.

2. Mengoptimumkan Membina Konteks dan Lapisan Caching

Docker membina lebih cepat apabila anda menyusun arahan COPY anda untuk mengambil kesempatan daripada caching lapisan.

  • Salin go.mod dan go.sum Pertama , kemudian jalankan go mod download . Ini bermakna Docker akan menggunakan semula modul yang dimuat turun kecuali fail tersebut berubah.
  • Salin kod sumber selepas itu supaya perubahan kod tidak membatalkan lapisan ketergantungan.
 Salin go.mod go.sum ./
Run Go Mod Muat turun

Salin. .

Pengoptimuman kecil ini menjimatkan masa yang ketara semasa CI/CD dan pembinaan semula tempatan.

Membina dan menggunakan aplikasi Go dengan Docker

3. Membina untuk pengeluaran dengan bendera yang betul

Apabila membina binari pergi untuk Docker, gunakan bendera yang mengoptimumkan untuk pengeluaran:

 pergi binaan -ldflags = " -s -w" -o main ./cmd/api
  • -ldflags="-s -w" , mengurangkan saiz binari.
  • CGO_ENABLED=0 Memastikan binari statik sepenuhnya (tiada kebergantungan luaran pada libc , dll.).
  • GOOS=linux memastikan binari dibina untuk Linux (diperlukan di dalam Docker).

Kemas kini Dockerfile anda dengan sewajarnya:

 Jalankan cgo_enabled = 0 goos = linux go binaan -a -installsuffix cgo -ldflags = " -s -w "-o main ./cmd/api

4. Jalankan sebagai pengguna bukan akar untuk keselamatan

Menjalankan bekas sebagai akar adalah risiko keselamatan. Buat pengguna bukan akar dalam imej terakhir anda:

 Dari Alpine: Terkini

Jalankan APK-Tidak ada CA-Certificates CA
Jalankan Adduser -D -S /BIN /SH AppUser

Workdir /home /appuser

Salin -dari = pembina /app /main.
Run Chown -R AppUser: AppUser ./
AppUser Pengguna

Dedahkan 8080
Cmd ["./main"]

Ini memastikan aplikasi anda berjalan dengan keistimewaan yang minimum.


5. Digunakan dengan Docker mengarang atau alat orkestrasi

Untuk pembangunan tempatan atau penyebaran mudah, gunakan docker-compose.yml :

 Versi: '3.8'
Perkhidmatan:
  API:
    Membina :.
    Pelabuhan:
      - "8080: 8080"
    Persekitaran:
      - env = pengeluaran
    Mulakan semula: Kecuali-dijalankan

Untuk pengeluaran:

  • Tolak gambar ke pendaftaran ( docker push myregistry/myapp:latest )
  • Digunakan menggunakan Kubernetes, ECS, atau mana -mana platform orkestra kontena.

Contoh tolak dan lari:

 Docker Build -t MyApp: Terkini.
Docker Tag MyApp: MyRegistry/MyApp Terkini: Terkini
Docker Push MyRegistry/MyApp: Terkini

# Jalankan secara tempatan
Docker Run -P 8080: 8080 MyRegistry/MyApp: Terkini

Bonus: Leverage .dockerignore

Sama seperti .gitignore , Gunakan .dockerignore untuk mengecualikan fail yang tidak perlu dari konteks binaan:

 .git
.Gitignore
Readme.md
Dockerfile
.dockerignore
*.md
go.mod
go.sum

Tunggu - jangan abaikan go.mod dan go.sum jika anda menyalinnya di dockerfile. Sebaliknya, tidak termasuk aset dev sahaja:

 .git
.Gitignore
Readme.md
*.test
*.sh
cmd/**/testdata

Ini menjadikan konteks membina kecil dan mempercepatkan membina.


Pada asasnya, menggabungkan kesederhanaan Go dengan mudah alih Docker memberikan anda penyebaran cepat, selamat, dan konsisten. Dengan pelbagai peringkat membina, keizinan pengguna yang betul, dan pelapisan pintar, perkhidmatan Go anda akan siap-siap dalam masa yang siap.

Atas ialah kandungan terperinci Membina dan menggunakan aplikasi Go dengan Docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mewujudkan persekitaran docker siap pengeluaran untuk php Mewujudkan persekitaran docker siap pengeluaran untuk php Jul 27, 2025 am 04:32 AM

Menggunakan imej asas PHP yang betul dan mengkonfigurasi persekitaran docker yang dioptimumkan prestasi yang selamat adalah kunci untuk mencapai pengeluaran siap. 1. Pilih PHP: 8.3-fpm-alpine sebagai imej asas untuk mengurangkan permukaan serangan dan meningkatkan prestasi; 2. Lumpuhkan fungsi berbahaya melalui php.ini adat, matikan paparan ralat, dan aktifkan Opcache dan JIT untuk meningkatkan keselamatan dan prestasi; 3. Gunakan nginx sebagai proksi terbalik untuk menyekat akses kepada fail sensitif dan memajukan permintaan PHP dengan betul kepada PHP-FPM; 4. Gunakan imej pengoptimuman pelbagai peringkat untuk menghapuskan kebergantungan pembangunan, dan menubuhkan pengguna bukan akar untuk menjalankan bekas; 5. Supervisord pilihan untuk menguruskan pelbagai proses seperti Cron; 6. Sahkan bahawa tiada kebocoran maklumat sensitif sebelum penggunaan

Bagaimana cara menggunakan refleksi di GO? Bagaimana cara menggunakan refleksi di GO? Jul 28, 2025 am 12:26 AM

Usereflect.valueofandreflect.typeoftogetruntimevaluesandtypes; 2.InspectyPedetailSwithReflect.TypeMethodsLikeName () dan); 3.ModifyValuesViaReflect.Value.elem () andCanset () afterpassingApointer; 4.CallMethodSdynamiciSingSingMethodByName () andCall (); 5.r.

Bagaimana cara mengendalikan masa? Bagaimana cara mengendalikan masa? Jul 27, 2025 am 03:44 AM

UseContext.withTimeoutTocreateAcanceLLableContextWithadeAdeAdeAdalwaysCancel () toreleAseSource.2.forhttprequests, setTimeOutSusingHttp.Client.TimeOutoruseContextViAHtp.NeweStanTheStorPorPorPorPorPorPorPorPorPorPorPorPorShorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorPorSheS.

Bagaimanakah pernyataan suis berfungsi? Bagaimanakah pernyataan suis berfungsi? Jul 30, 2025 am 05:11 AM

Pernyataan Switch GO tidak akan dilaksanakan sepanjang proses secara lalai dan secara automatik akan keluar selepas memadankan keadaan pertama. 1. Suis bermula dengan kata kunci dan boleh membawa satu atau tiada nilai; 2. Kes perlawanan dari atas ke bawah dalam urutan, hanya perlawanan pertama yang dijalankan; 3. Pelbagai syarat boleh disenaraikan oleh koma untuk memadankan kes yang sama; 4. Tidak perlu menambah rehat secara manual, tetapi boleh dipaksa melalui; 5.Default digunakan untuk kes -kes yang tidak dapat ditandingi, biasanya diletakkan pada akhir.

Cara Memasang Docker di CentOS 7 Cara Memasang Docker di CentOS 7 Jul 27, 2025 am 01:14 AM

DockerCerBesuccessullelystalledoncentos7ByFollyTheseSteps: 1.removeolddockerversusingsudoyumremoveDocker*toensureAcleanSetup.2.InstallRequiredDepryDepryDelyShiShoChoChoChoChoChoChoChoCheScelssisten.3Sdevice-MaperSdeviceSsual.3Sdevice-MaperSdevice-MaperSdeviceSsual.3Sdevice-MaperSdeviceSsual.3Sdevice-MaperSdeviceSsual.3SDevice-MaperSdeviceSsual-MaperSdeviceSsual.3SdeviceSsual-MaperSdeviceSsual.3

Parsing dan manipulasi JSON yang cekap di GO Parsing dan manipulasi JSON yang cekap di GO Jul 27, 2025 am 03:55 AM

Usestructswithperjsontagsferpredictabledoensefant, safeparsingwithcompile-timetypesafety.2.avoidmap [string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] interface {string] } duetoreflectionoverheadandruntimetypeassertionsunlessdealingwithtrulydynamicjson.3.usejson.rawmessagefordeferredorselective

Menggunakan pakej konteks di GO untuk pembatalan dan tamat masa Menggunakan pakej konteks di GO untuk pembatalan dan tamat masa Jul 29, 2025 am 04:08 AM

UseContextTopropagateCanCanCellationandDeadlinSacrossgoroutines, enablingCooperativeCancellationInhttpservers, BackgroundTasks, andChainedCalls.WithContext.WithCancel (), CreateAcancellableContextandCallCancel () Tosignalters () tosignalters () tosignalters ()

Membina pelayan Graphql di mana Membina pelayan Graphql di mana Jul 28, 2025 am 02:10 AM

Initizeagomodulewithgomodinit, 2.Installgqlgencli, 3.DefineasChemainschema.Graphqls, 4.RungqlgenItogeneratemodelSolv ers, 5.ImplementResolverFunctionsForqueriesiesandmutations, 6.SetUpanHtpserverusingTheGeneratedSchema, and7.RuntervertOaccessgr

See all articles