(Acest articol a fost publicat pentru prima dată pe blogul pharmaverseși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)
Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.
Optimizarea blogului nostru Pharmaverse: reducerea timpului de publicare cu containere
În calitate de colaborator activ al blogului pharmaverse, am apreciat întotdeauna oportunitatea de a împărtăși noi perspective și instrumente comunității noastre. Blogul pharmaverse are câteva caracteristici interesante pentru publicare. Deși procesul de publicare a blogului a fost eficient, mă întrebam dacă există o modalitate de a ne optimiza fluxurile de lucru. În prezent, canalul CI/CD pentru publicarea blogului a durat de obicei aproximativ 17 minute pentru a implementa o nouă postare. Containerele sunt întotdeauna răscolite ca soluții. Din păcate, nu eram sigur cum să creez un nou container/imagine pentru a-mi satisface nevoile și m-am bazat pe unele drepte install.packages() în conducta CI/CD. Din fericire, m-am încrucișat cu fabulosul Maciej Nasinski și am construit un container specific pentru procesul de publicare pentru blogul pharmaverse, ceea ce a permis o reducere notabilă a timpului de publicare.
Mai jos voi discuta despre modul în care imaginea containerului pharmaverse a îmbunătățit fluxul de lucru de publicare al blogului nostru, reducând timpul de implementare la aproximativ 5 minute. De asemenea, suntem interesați de feedback cu privire la alte posibile utilizări ale acestui container (cum ar fi devcontainers) sau construirea de containere suplimentare pentru anumite scopuri. Pentru cei interesați, am fi bucuroși să oferim un tutorial despre containere sau să luăm legătura dacă aveți idei sau doriți să vă implicați!
Abordarea anterioară: Instalarea pachetului general
Secțiunea relevantă a vechiului nostru job de build-deploy a evidențiat acest lucru:
build-deploy:
# ... other configurations ...
steps:
# ... checkout and setup Quarto ...
- name: Setup R
uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true
- name: Install dependencies
uses: r-lib/actions/setup-r-dependencies@v2
with:
packages: |
jsonlite
tidyverse
spelling
janitor
diffdf
admiral
admiralonco
# ... and many, many more packages ...
haven
# ... other steps like install tinytex and publish ...
Acest pas „Instalați dependențe”, care implică o listă substanțială de pachete pharmaverse, a contribuit principal la timpul de execuție de 17 minute. Fiecare rulare a fluxului de lucru a implicat descărcarea și configurarea acestor pachete, prelungind durata totală de implementare.
Adoptarea imaginii containerului pharmaverse: o alternativă eficientă
Soluția la această provocare a venit odată cu introducerea imaginii containerului pharmaverse: ghcr.io/pharmaverse/docker_pharmaverse:4.5.1. Această imagine a containerului a fost concepută special pentru analiza datelor farmaceutice, prezentând peste 40 de pachete esențiale pharmaverse preinstalate. Aceste pachete acoperă diferite funcționalități, inclusiv CDISC ADaM/SDTM, raportarea studiilor clinice și trimiterile de reglementare. Construit pe imaginea rocker/tidyverse și încorporând R 4.5.1, oferă un mediu preconfigurat.
Iată o prezentare generală a jobului nostru actualizat de build-deploy:
build-deploy:
needs: Update-post-dates
runs-on: ubuntu-latest
container:
image: "ghcr.io/pharmaverse/docker_pharmaverse:4.5.1"
permissions:
contents: write
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Configure Git safe directory
run: git config --global --add safe.directory /__w/blog/blog
- name: Set up Quarto
uses: quarto-dev/quarto-actions/setup@v2
with:
version: 1.9.12
# NOTE: Explicit R package installation is no longer required here.
- name: Install tinytex
run: quarto install tool tinytex
- name: Mark repo directory as safe
run: git config --global --add safe.directory /__w/blog/blog
- name: Publish
uses: quarto-dev/quarto-actions/publish@v2
with:
path: . # Path to your .qmd file
target: gh-pages # Target branch for GitHub Pages
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Rezultatul acestei schimbări a fost o reducere consistentă a timpului de publicare. Blogul nostru se publică acum în aproximativ 5 minute. Yay!
Aplicații mai largi ale imaginii containerului Pharmaverse
În timp ce această actualizare beneficiază direct publicarea blogului nostru, imaginea containerului pharmaverse oferă o utilitate mai largă. Este o resursă valoroasă pentru:
- Analiza datelor farmaceutice: sarcini de sprijin legate de ADaM, SDTM și TLF.
- Programarea studiilor clinice: Asistență cu trimiterile de reglementare.
- Cercetare reproductibilă: oferirea unui mediu consistent și verificabil.
- Instruire și educație: oferind o configurație gata de utilizare în scopuri educaționale.
- Conducte CI/CD: îmbunătățirea testării și raportării automate, așa cum se observă în propriul nostru flux de lucru.
- Dezvoltare colaborativă: facilitarea unor medii consistente între echipe.
Exemplu: Rularea reproductibil RStudio local
Pentru a porni o instanță locală RStudio folosind imaginea pharmaverse, puteți utiliza un container „o singură linie”. Această comandă condensează întreaga configurație – rețea, stocare și execuție în fundal – într-un singur șir de execuție. Conectează folderul local cu containerul, permițându-vă să editați fișiere „din zbor” fără a instala R sau pachete pe mașina dvs. reală.
Alegeți comanda care se potrivește cu sistemul dvs. de operare:
1. Mac-uri Linux și Intel (Standard)
Pentru arhitectura standard, setăm o parolă simplă (rstudio) și montați directorul curent.
docker run -d --name my_pharma_rstudio --rm -p 8787:8787 -e PASSWORD=rstudio -v "$(pwd)":/home/rstudio/project ghcr.io/pharmaverse/docker_pharmaverse:4.5.1
2. Apple Silicon (M1/M2/M3)
Nota: Încă nu acceptăm în mod nativ arhitectura ARM64 (de exemplu, Apple Silicon). Comanda de mai jos folosește emularea (--platform linux/amd64) pentru a rula imaginea. Dezactivăm, de asemenea, autentificarea, deoarece viteza mai lentă de emulare poate cauza uneori expirarea timpului de configurare a parolei.
docker run -d --name my_pharma_rstudio --rm --platform linux/amd64 -p 8787:8787 -e DISABLE_AUTH=true -v "$(pwd)":/home/rstudio/project ghcr.io/pharmaverse/docker_pharmaverse:4.5.1
Ce face această comandă?
- **
--rm&-d**: rulează containerul în fundal (detașat) și îl îndepărtează automat când este oprit, păstrând mașina curată. -v "$(pwd)":...: Îți ia Psupărat Working Directory și îl montează în interiorul containerului. Orice fișier pe care îl salvați în folderul „proiect” al RStudio este salvat instantaneu pe computerul local.--platform linux/amd64(doar Mac): Forțează computerul să emuleze arhitectura Intel cerută de imagine.-e DISABLE_AUTH=true(doar Mac): Ocolește ecranul de conectare pentru a asigura accesul imediat, în ciuda vitezei mai lente de emulare.
Accesarea RStudio
Odată ce comanda rulează:
- Deschideți browserul pentru
http://localhost:8787. - Linux/Intel: Conectați-vă cu utilizatorul
rstudiosi parolarstudio. - Apple Silicon: Veți fi autentificat automat.
Veți vedea fișierele locale mapate la project folder din panoul Fișiere, gata pentru analiză.
Ultima actualizare
2026-01-18 22:21:19.079894
Detalii
Reutilizați
Citare
citat BibTeX:
@online{straub_and_maciej_nasinski2026,
author = {Straub and Maciej Nasinski, Ben},
title = {Pharmaverse and {Containers}},
date = {2026-01-18},
url = {https://pharmaverse.github.io/blog/posts/2026-01-18_pharmaverse_containers/pharmaverse_and__containers.html},
langid = {en}
}
Pentru atribuire, vă rugăm să citați această lucrare ca:
Straub și Maciej Nasinski, Ben. 2026. „Pharmaverse și containere”. 18 ianuarie 2026. https://pharmaverse.github.io/blog/posts/2026-01-18_pharmaverse_containers/pharmaverse_and__containers.html.
