(Acest articol a fost publicat pentru prima dată pe Realizarea geneticiiși a contribuit cu drag la R-Bloggers). (Puteți raporta problema despre conținutul de pe această pagină aici)
Doriți să vă împărtășiți conținutul pe R-Bloggers? Faceți clic aici dacă aveți un blog sau aici dacă nu.
Repostat din original la https://blog.stephenturner.us/p/development-environment-portable-reductible.
Îți actualizezi vechiul Intel MacBook Pro pentru un nou M4 MBP. Configurați un nou VM cloud pe AWS după ce migrați departe de GCP. Obțineți un cont pe noul HPC al instituției. Ai totul Doar așa În mediul dvs. de dezvoltare, iar acum trebuie să vă amintiți cum să configurați totul din nou.
Tocmai am început o nouă pozițieȘi fac asta chiar acum.
Configurarea unui mediu de dezvoltare reproductibil și portabil, care funcționează perfect pe diferite mașini și platforme cloud vă poate economisi timp și dureri de cap. Acestea sunt câteva dintre strategiile pe care le folosesc să -mi reproduc rapid mediul de dezvoltare pe mașini.
-
Containere dev în cod vs
DotFiles sunt fișierele de configurare ascunse din directorul de origine. Exemple includ .vimrc Pentru Vim, .tmux.conf pentru tmux, sau .bashrc pentru mediul tău de coajă. Am o listă lungă de aliasuri și funcții mici de bash într -un .aliases.sh Fișează asta .bashrc surse. Am și un .dircolorsglobal .gitignorea .gitconfigși un minim .Rprofile.
Ori de câte ori obțineți o mașină nouă sau VM, punerea în configurare a lucrurilor este ușoară:
# Your private dotfiles repo git clone https://github.com//dotfiles cd ~/dotfiles # A script to symlink things to your home ./install.sh
Am început să joc cu calculatoare în anii ’90. Am experimentat suficiente eșecuri pe hard disk, la întâmplare Bsodsși alte eșecuri critice, că îmi tratez computerul ca și cum ar putea să ardă spontan în orice moment și aș putea pierde imediat toate lucrările mele neatinse, fără susținere, în orice moment. Îmi tratez VM -urile în cloud la fel, ca și cum ar fi de unică folosință (de multe ori ei sunt de unică folosință, prin proiectare).
Imaginați -vă că lansați un nou Cloud VM pornind de la o imagine ubuntu curată. Now you need all the tools you use every day on this machine – vim, tmux, RStudio, conda, Docker, gcloud/gsutil, etc. Additionally, while I use conda to create virtual environments for installing tools for specific tasks, there are some domain-specific tools I use so often every day for exploratory analysis that I actually prefer having a local installation on the machine — things like bedtools, seqtk, samtools, BCFTOOLS, FASTP, NextFlow și alți câțiva – în loc să fie nevoit să încărc un mediu conda sau să folosesc Docker de fiecare dată când vreau să fac ceva simplu.
Știu că acest lucru nu este complet reproductibil ™ în sensul că ar putea fi un container Docker, deoarece nu controlez versiunea fiecărui instrument și bibliotecă pe care o instalez, dar este suficient de bun pentru a mă pune în funcțiune pentru dezvoltare și analiză interactivă a datelor și explorări.
Tidyverse este probabil cel mai cunoscut meta-pachet care instalează o mulțime de alte pachete pentru știința datelor. Uitați -vă la fișier de descriere a pachetului Tidyverse. Când alergi install.packages("tidyverse")va instala toate pachetele enumerate în câmpul Importuri, inclusiv DPlyR, Tidyr, Purrr, GGPLOT2 și altele.
Puteți utiliza acest model pentru a crea propriul pachet „vers” care vă instalează toate pachetele preferate. Acest lucru este util pentru configurarea unei noi mașini sau reinstalarea tuturor pachetelor R pe care le utilizați ori de câte ori faceți upgrade la o nouă versiune majoră a R.
devtools::install("stephenturner/Tverse")
Containerele de dezvoltare (containere Dev) vă permit să creați și să utilizați medii de dezvoltare consistente folosind containere Docker. Vă permite să deschideți orice folder în interior (sau montat într -un container și să profitați de setul complet de caracteristici Visual Studio Code. Acest lucru este deosebit de util atunci când lucrați cu echipe sau treceți între proiecte cu dependențe diferite.
Containerul dev documente şi tutorial sunt ambele locuri bune pentru a începe. Va trebui să aveți Docker să funcționeze și să instalați Containere dev și extensie de cod.
Din documentația Microsoft:
Fișierele din spațiul de lucru sunt montate din sistemul de fișiere local sau copiate sau clonate în container. Extensiile sunt instalate și rulate în interiorul containerului, unde au acces complet la sistemul de instrumente, platformă și fișiere. Aceasta înseamnă că puteți schimba perfect întregul dvs. mediu de dezvoltare doar conectându -vă la un alt container.

Puteți utiliza oricare Șabloane de containere Dev pre-construită
Disponibil pe registre precum Docker Hub sau Registrul Containerului Microsoft. Iată un exemplu folosind rocker cu versiunea R 4.4.1 și adaugă câteva extensii la codul vs care rulează în container. De asemenea, puteți crea propriul dvs. container pentru dezvoltare, să îl puneți pe Docker Hub, apoi să utilizați acea imagine.
{
"image": "rocker/r-ver:4.4.1",
"customizations": {
"vscode": {
"extensions": (
"REditorSupport.r",
"ms-vscode-remote.remote-containers"
)
}
}
}
Puteți utiliza un obicei Dockerfile Pentru a vă crea containerul dev. În primul rând, creați un .devcontainer/ Director în proiectul dvs. cu un Dockerfile și a devcontainer.json
fişier. Definiți -vă mediul de dezvoltare în DockerFile (imagine de bază, pachete instalate și configurație). În JSON înlocuiți proprietatea imaginii cu proprietăți Build și DockerFile:
{
"build": {
"dockerfile": "Dockerfile"
}
}
După ce vă creați devcontainer.json fișier (fie dintr -un șablon, fie complet personalizat), deschideți folderul din container folosind paleta de comandă:

Și dovediți -vă că mediul dvs. de cod VS folosește într -adevăr containerul (folosesc Rocker R 4.4.1 aici). Funcţionare whoami arată că sunt rădăcină în interiorul containerului (nu propriul meu nume de utilizator) și, într -adevăr, rulez R versiunea 4.4.1.

