TDP003 Projekt: Egna datormiljön
Att publicera portfolion på webben
Innan ni publicerar er portfolio, se till att den uppfyller alla krav som ställs på systemet. Se Projektuppgift för mer information.
Vi kommer att använda det Kuberneteskluster som finns på universitetet för att publicera era portfolioprojekt så att de finns tillgängliga var som helst och när som helst. Hur detta görs beskrivs i guiden nedan.
Se till så att portfolion fungerar i servermiljön
Kubernetes använder ett system som kallas Docker för att isolera olika projekt, och se till så att de körs i rätt miljö. Detta gör också att vi enkelt kan testa att köra portfolion i den miljö som kommer köras på servern utan att behöva ladda upp någonting på någon server. Detta görs på följande sätt:
- Installera
docker
på ert system med kommandotsudo apt install docker.io
- Lägg till dig själv i gruppen
docker
, så att du kan använda Docker utansudo
med kommandotsudo usermod -a -G docker $USER
Starta sedan om datorn (reboot
i terminalen). - Skapa filen
Dockerfile
med följande innehåll i mappen där ni har ert projekt (eller ladda ner den här):FROM python:latest ENV APP_HOME /app RUN mkdir $APP_HOME WORKDIR $APP_HOME RUN pip install flask ADD . $APP_HOME/ ENV FLASK_APP=main.py CMD flask run -h 0 -p 3000
- Skapa filen
.dockerignore
(OBS: notera punkten i början av filen och inget filformat) i mappen med ert projekt (eller ladda ner den här):**/.git **/__pycache__
- Redigera raden
ENV FLASK_APP=main.py
och ersättmain.py
med namnet på den fil som innehåller presentationslagret. - Skapa en avbild med namnet
portfolio
med kommandotdocker build -t portfolio .
OBS: notera punkten i slutet på kommandot - Testa sedan att allt fungerar som det ska genom att köra den avbilden vi skapade med kommandot
docker run -t -i -p 3000:3000 portfolio
Portfolion ska då startas i terminalen, och kan kommas åt lokalt via adressenhttp://localhost:3000/
Om någonting inte verkar fungera är detta ett ypperligt tillfälle att felsöka, eftersom all information finns enkelt tillgänglig. När portfolion laddas upp på servern är det mycket svårare att få tag på all information om vad som har gått fel, och det tar mycket längre tid att lägga upp en fix. För att testa ändringar lokalt på detta viset räcker det att upprepa steg 6 och 7 för att se resultat.
Om ni börjar få slut på diskutrymme efter att ha testat ett tag (dockeravbilder är ganska stora)
kan det vara värt att köra kommandona docker container prune
följt av docker
image prune -a
.
Förbered ert delade repository
För att undvika att GitLab försöker publicera projektet från ert delade repository behöver vi berätta för den att den inte ens ska försöka. Görs inte detta kommer ni att få ett mail från GitLab varje gång ni push:ar till ert delade repository som beskriver att något gick fel. För att undvika detta, och för att spara på resurser (det tar ganska lång tid att köra publiceringsprocessen) vill vi stänga av detta. Detta görs enligt nedan:
- Logga in på gitlab.liu.se med ert LiU-ID, och navigera till ert delade repository (alltså inte det personliga publiceringsrepositoryt, det kommer vi till snart).
- Klicka på "Settings" i vänstermenyn (kugghjulet). Klicka på "General". Expandera sedan "Visibility, project features, permissions" och stäng av "CI/CD" under "Repository". Skrolla sedan ner och tryck på "Save Changes".
Detta ska göra så att GitLab inte försöker publicera från ert delade repository. Har ni missat dessa steg kommer ni att få mail från GitLab. Dubbelkolla i så fall stegen ovan, och hör av er till kursledningen om det inte löser problemet.
Förbered ert lokala repository
Om allting verkar fungera som det ska lokalt kan vi nu börja förbereda vår lokala kopia av koden
med den information som behövs för att ladda upp portfolion hela vägen från GitLab till LiU:s
servrar. Till detta behövs ytterligare en konfigurationsfil: .gitlab-ci.yml
. Den
filen berättar för GitLab vad som ska göras varje gång ni publicerar en ny commit med git
push
. (Detta kallas ibland för continuous deployment).
- Ladda ner och lägg till filen
.gitlab-ci.yml
(notera punkten i början av namnet) i mappen med ert projekt (om ni öppnar filen i en texteditor, var noga med att editorn inte stoppar in tab-tecken i filen - det kan göra den ogiltig senare). - Gör en commit med alla filer som behövs för uppladdningen:
git add .dockerignore .gitlab-ci.yml Dockerfile
git commit -m "Publikationsfiler" - Ladda upp allt på GitLab:
git push
Förbered det individuella publiceringsrepositoryt
Det går bara att ladda upp portfolion från repositories som är förberedda för detta. Alla kommer att få tillgång till sådana repositories på gitlab.liu.se. Det nya repositoryt måste konfigureras lite innan det kan användas för att publicera portfolion.
- Logga in på gitlab.liu.se med ert LiU-ID.
- Klicka på "Projects" i övre vänstra hörnet, sedan "Your projects", och klicka på projektet som ni ska använda för att ladda upp portfolion (namnet börjar med tdp003-2024 och innehåller ert LiU-id).
- Expandera "Settings" i vänstermenyn (kugghjulet), och klicka sedan på "General". Expandera sedan "Visibility, project features, permissions" och se till att "Container registry" är aktiverat. Klicka sedan på "Save changes" en bit ner på sidan.
- Gå sedan till "Repository" under "Settings" i vänstermenyn. Expandera sedan "Deploy Tokens".
- I botten av sidan finns en lista "Active Deploy Tokens". Om den innehåller en rad som börjar med "gitlab-deploy-token" behöver inget mer göras. Annars måste en token skapas: Skriv "gitlab-deploy-token" i fältet (utan citattecken) "Name", lämna "Expires at" och "Username" tomma. Markera rutan "read_registry" och klicka på "Create deploy token".
Efter dessa steg ska repositoryt vara färdigkonfigurerat för att publicera portfolion.
Koppla samman ert repository med det individuella publiceringsrepositoryt
Det går bara att ladda upp portfolion från repositories som är förberedda för detta. Alla kommer att få ett eget repository som kan användas för detta. Vi behöver därför se till så att ni kan publicera er kod även till detta repository. Denna uppsättning måste göras på alla datorer som ska användas för att publicera eller uppdatera portfolion.
- Logga in på gitlab.liu.se med ert LiU-ID.
- Klicka på "Projects" i övre vänstra hörnet, sedan "Your projects", och klicka på projektet som ni ska använda för att ladda upp portfolion (namnet börjar med tdp003-2024)
- Välj den blåa knappen "Clone" till höger om projektets namn, och kopiera adressen som står under "Clone with SSH".
- Öppna en terminal och navigera till katalogen som innehåller er portfolio. Lägg sedan till
en ny remote med kommandot:
git remote add production <adressen från GitLab>
.
Publicera portfolion
När ni nu har lagt till en ny så kallad remote till repositoryt går det att ladda upp all
kod dit med kommandot git push production main
. (Om du har andra namn på dina
grenar lokalt kan du behöva köra git push master:main
, vilket betyder ladda upp min
gren master
till main
på servern.) Efter att ha kört detta kommando
kommer ni att se all er kod i det nya repositoryt. Har ni dessutom lagt till
filen .gitlab-ci.yml
kommer GitLab att börja packetera erat projekt för att
publicera det.
För att se hur det går med publikationsprocessen kan man klicka på raketen märkt "CI/CD" i
vänstermenyn för repositoryt. Då visas en lista över alla så kallade pipelines, och deras
status. En pipeline skapas varje gång ni kör git push production master
, och
motsvarar ett försök att publicera projektet. För att visa mer information om hur det går kan ni
klicka på numret i andra kolumnen (exempelvis #1234). Där visas de två stegen som GitLab kommer
köra: först docker_build
, som bygger en dockeravbild liknande vad som gjordes ovan,
och deploy
som laddar upp projektet på internet. Om man klickar på en av de två
delarna så kan man se utdatan från de olika stegen, vilket kan underlätta felsökning om det
behövs (fungerade det tidigare ska det förhoppningsvis fungera här också). Notera att dessa steg
kan ta rätt lång tid, från några minuter till någon timme.
När båda stegen är klara (båda har en grön bock på sig) så har allt gått som det ska. Då kommer
ert projekt inom 5-10 minuter vara tillgängligt via
adressen <projektnamn>.kubernetes-public.it.liu.se
, där <projektnamn> är
namnet på projektet på
gitlab.liu.se. Exempelvis http://tdp003-2022-pialo23.kubernetes-public.it.liu.se/.
Sidansvarig: Pontus Haglund
Senast uppdaterad: 2024-09-02