Da, lahko uporabite drugo osnovno sliko za svojo aplikacijo Go v Dockerju. Tukaj je nekaj možnosti in premislekov:
1. Uradna Golangova slika:
- Uradna slika `golang` je dobro izhodišče in jo priporoča skupina Docker.
- Zagotavlja potrebno verigo orodij Go in odvisnosti za izdelavo in zagon vaše aplikacije Go.
- Primer: `FROM golang:1.19-alpine`
2. Alpska slika:
- Slika `golang:alpine` je manjša različica uradne slike `golang`, ki temelji na distribuciji Alpine Linux.
- Rezultat so manjše končne slike Dockerja, kar je koristno za uvajanje.
- Vendar ima lahko slika, ki temelji na Alpine, težave z združljivostjo z nekaterimi knjižnicami, ki so odvisne od glibc.
- Primer: `FROM golang:1.19-alpine`
3. Slika brez distribucije:
- Slike brez distribucije so minimalne slike Docker, ki ne temeljijo na korenskem sistemu in vsebujejo samo vašo aplikacijo in njene odvisnosti med izvajanjem.
- Zasnovani so tako, da so čim manjši in varni, ne da bi vključevali upravitelja paketov, lupino ali druge nepotrebne komponente.
- Primer: `FROM gcr.io/distroless/base-debian11`
4. Praskana slika:
- Slika `scratch` je prazna osnovna slika, kar pomeni, da ne vsebuje operacijskega sistema, knjižnic ali drugih odvisnosti.
- Posledica tega je najmanjša možna slika Dockerja, vendar zahteva, da je vaša aplikacija statično prevedena in vključuje vse potrebne odvisnosti.
- Primer: `IZ nič`
Pri izbiri osnovne slike upoštevajte naslednje dejavnike:
- Velikost slike: Na splošno so zaželene manjše slike za hitrejšo uvedbo in zmanjšane zahteve za shranjevanje.
- Združljivost: zagotovite, da so vaša aplikacija in njene odvisnosti združljive z osnovno sliko, ki jo izberete.
- Varnost: slike brez distribucije in scratch slike so varnejše, saj imajo manjšo napadalno površino.
- Odpravljanje napak: Slike s polnim operacijskim sistemom (npr. `golang`) je morda lažje odpraviti napake, saj lahko dostopate do lupine vsebnika in pripomočkov.
Izbira osnovne slike je na koncu odvisna od vaših posebnih zahtev, kot so velikost slike, varnost in kompleksnost vaše aplikacije Go. Običajno je, da za razvoj in testiranje uporabite uradno sliko »golang« in nato preklopite na bolj minimalistično sliko, kot je »distroless« ali »scratch« za produkcijske uvedbe.
Citati:[1] https://stackoverflow.com/questions/47028597/choosing-golang-docker-base-image
[2] https://hub.docker.com/_/golang
[3] https://snyk.io/blog/containerizing-go-applications-with-docker/
[4] https://docs.docker.com/language/golang/build-images/
[5] https://dev.to/chseki/build-a-super-minimalistic-docker-image-to-run-your-golang-app-33j0