Ho bisogno di eseguire l'applicazione Golang sulla macchina Docker.Golang Mac OSX build per macchina Docker
Sto lavorando su Mac OSX e Docker funziona sulla parte superiore della macchina virtuale Linux, quindi i file binari creati su Mac non sono eseguibili su Docker.
vedo due modi qui:
- compilazione incrociata binari su Mac OS Linux
- fonti di progetto copia alla finestra mobile, eseguire 'andare a prendere' e 'andare build' su di esso
Il primo è difficile a causa di CGO (è utilizzato in alcune librerie importate).
Il secondo è molto lento a causa dell'operazione "go get".
Potete dirmi, qual è il modo più comune in questa situazione? O forse sto facendo qualcosa di sbagliato?
Docker memorizza nella cache i livelli immagine e consente di iniziare da un'immagine specifica. Suddividi i comandi nel Dockerfile in modo da poter riutilizzare quanti più strati possibili, e le modifiche nella tua fonte richiedono solo la creazione del tuo pacchetto. – JimB
JimB, ma come posso interrompere il comando 'go get'? RUN go get package1/n RUN go get package2 ... etc e saranno memorizzati nella cache? –
Don 'use' go get', o almeno crea un'immagine base con esso e inizia da lì ('go get 'non dovrebbe essere usato in produzione, quindi molte persone hanno qualche altro metodo per gestire le dipendenze). Una soluzione di base in un singolo Dockerfile consiste nel creare un Makefile o uno script per installare tutti i deps come richiesto, che possono essere inseriti in una singola istruzione RUN. – JimB