Lektion 3 av 12
Vi har tidigere pratat om containere och Docker (Webbutveckling backend: lektion 2), denna lektion kommer att bli litet repitaion på denna snak. Men med fokus på hur vi själv kan bygga en ett docker image och använda det,
Förre lektion (2): Automatisering av bygg och release
Nästa lektion (4): Serverless
Detta är material (artiklar, videoer, blogs, podcasts etc) som är den teoretiska bas för denna lektion, det antas att du har läst/set/lystnad detta innan lektionen starter.
Estimerat samlat “läs”-tid för lektionslittertur är 131 min (för den frivilliga fördjupningslitteratur gäller 122 min)
Ett sätt att paketere en applikation
Det (för tiden) mest populära container system
En teknik som gör det möjligt att hålla koll på fler samtidiga containere som utgör ett system. Orkestring använns till att styra när en container ska köra, vilken version som ska köra och hur många instanser som ska köra.
Det (för tiden) mest populära system till att orkestrera containere
Gå igennom detta lab på GitHub:
Dissa övningar är bygger på varandra
Mål med denna övning: Bygg en container som kan hålla Hello World webb applikationen (samma om vi använda i förra lektion). Och få applikationen att köra i Docker, så att du kan komma åt den med webbläsare: localhost:80.
Hints:
Blogg:
Ni har nu en Docker container som innehåller vår Hello World applikation
Mål med denna övning: Gör en Docker compose fil som kan köra din nya Hello World-Docker container
docker-compose.yml
fil som beskivar hur eran docker container ska köras
docker-compose up
Docker Compose är speciellt smidigt för lokala utvecklingsmiljö vart man har behov av flera containers (services) jobbar ihop i en applikation. I detta exempel är där endast en service så där finns inte ett jätte behov av en compose fil, men så fort applikationen växer blir den relevant.
OBS: Ni kommer inte att använda denna compose fil mer i denna övning
Ni har nu en Docker container som innehåller vår Hello World applikation (och en Docker Compose definition).
Mål med denna övning: Är att skåpa ett Docker image och publicera det till “GitHub packages” med GitHub Actions. Ni väljer själv vilken av dom två system ni vill använda.
Så här kan eran jobs-section i action workflowen se ut, se till att ersätta, med rätt info:
jobs:
build-and-push-api:
runs-on: ubuntu-latest
env:
working-directory: ./Source
steps:
- name: Checkout code
uses: actions/checkout@v2.3.4
- name: Login to GitHub Container Registry
uses: docker/login-action@v1.10.0
with:
registry: ghcr.io
username: ${ { github.actor } };
password: ${ { secrets.GITHUB_PAT } }
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2.7.0
with:
push: true
context: ${ {env.working-directory} }/PROJECT_DIR
tags: |
ghcr.io/DITT_USER_NAME/PROJECT:latest
ghcr.io/DITT_USER_NAME/PROJECT:${ { github.run_number } }
Hints:
Ni kan nu logga in på eran GitHub packages med docker och hämta ut er container och gör en pull på det med docker pull
Inlämnas via PingPong, men sparas i GitHub
Gör ett nytt inlägg på din blogg som du gjorde i samband med lektion 1+2. Det rekomenderas att skriva på samma språk som din första blogg post.
Deadline på PingPong, tisdag den 14:e september kl 23:55. Posta ett länk till dagens blog post.
Skriv ett blogg post som följer denna lektion ska innehålla en text som svara på dissa frågor:
Om du vill kan du nu välja att dela denna blogpost på sociala media (Linked, Twitter, Facebook etc.) kom ihåg att använda lämpliga hashtags som: #1 #2