Docker: Lav din egen Nginx, PHP & mysql server stack i CasaOS

Er du ny til alt dette her med Docker, så er denne step by step guide måske en vej for dig til at få noget der virker, uden at du skal bruge flere timer på at fejlsøge så du kan komme igang med at udvikle noget.

Denne docker container er kun til test formål, hvis du skal bruge den til live sider, så er der nogle ting du skal ændre (eksempelvis password til mysql…).

Inden jeg går igang, så skal jeg oplyse om at der i denne artikel er benyttet et Zimaboard 832 som jeg har lånt af fra IceWhale. Du kan læse mere om Zimboard i en af artiklerne om Zimaboard her: Zimaboard.

Fordi det her udvikles på et Zimaboard så kan nogle af dine stier være anderledes.

Hvilke operativ system benyttes der her i guiden

CasaOS på en Debian installation, men du kan benytte hvad du har lyst til.

Hvilke terminal komandoer skal du bruge

sudo docker build nginx-docker -t nginx-docker

Benyttes til at oprette docker image som skal bruges til at oprette din docker container. Uden denne komando vil du ikke have mulighed for at ændre config filen til nginx og få PHP til at virke.

sudo docker image -a

Giver dig en liste af tilgægelige images du kan bruge til docker, god til at se om din build komando virkede korrekt (specielt med navngivningen)

sudo docker rmi nginx-docker

Benyttes til at slette et ikke aktivt image, hvis du har lavet ændringer.

Forbered nginx-docker image fil

Først skal du bygge din nginx-docker fil så du kan oprette din container. Sørg for at være på en maskine hvor du har adgang til docker build komandoen inden du går videre.

Start med at oprette en mappe med navnet “nginx-docker”. navnet er ikke vigtigt , men fordi det er det navn de rbenyttes senere, så vil jeg anbefale at du benytter det samme.

I mappen opretter du nu en fil der hedder Dockerfil (uden nogen endelse) og en mappe der hedder nginx.

Gå nu ind i mappen nginx og opret en fil der hedder “default.conf”

Når du har gjort det , så er du allerede meget langt med oprettelsen, du skal nu fylde nogle værdier ind i filerne. Du får her alt indhold til alle filer med det samme:

Dockerfile

Dockerfile henter med denne Dockerfile en kopi af nginx fra den officelle nginx dockerhub og tilføjer filen nginx/default.conf til mappen /etc/nginx/conf.d som bliver en del af denne container. Det betyder at alle indstillinger du laver i default.conf vil være en del af din container når den starter.

default.conf

default.conf kan indeholde en hel del indstillinger til din nginx installation, men her er det meget simpel. Den lytter på port 80 (hvis du skifter port, så skal du skifte det her også). den kigger efter index.php filer først og så kigger den efter index.html som det næste.

Til slut forbinder den PHP med nginx på port 9000 som er standarden for dette.

Build din docker image

Du er nu klar til at bygge dit image til docker og det er nemt, du har nemlig lavet alt arbejdet nu.

Åben en terminal og gå til det sted din mappe nginx-docker er placeret (cd komandoen og ls for at se mapperne). Når du har fundet den rigtige mappe, skal du skrive følgende komando:

Du burde nu se nogen der ligner det her:

Sending build context to Docker daemon 3.584kB
Step 1/2 : FROM nginx:alpine
—> 529b5644c430
Step 2/2 : ADD nginx/default.conf /etc/nginx/conf.d
—> Using cache
—> bd78c8467756
Successfully built bd78c8467756

og du kan verifisere at dette virker med komandoen

Hvor du nu ser en liste med images der er tilgeængelige:

REPOSITORY TAG IMAGE ID CREATED SIZE
nginx-docker latest bd78c8467756 5 minutes ago 42.6MB

Tid til at skabe en docker compose fil

Der er flere måder at oprette en container på, enten komandoer eller en compose fil. Jeg har valgt at lave det her med en compose file og jeg deler den her med dig.

webstack-compose

En ting der er vigtigt her og det er at mellemrum er korrekt, da formatet YAML som den er lavet i , kræver at de er korrekte. I tilfælde af du ændre på det her eller den er kopieret forkert, så kan du verifisere at det er gyldigt YAML med denne hjemmeside: https://www.yamllint.com/

De vigtige punkter her er volumes, både ofr nginx og php.

Hver linje i volumes afskilles af en : og det på venstre sige er på din maskine, altså uden for containeren og det på højre side er det i selve containeren.

Det på venstre side skal du få til at passe med din maskine. Grunden til at du skal have disse volumes er så du kan fjerne din container uden at miste filerne. Det er nemlig smart når man skal opdatere en container at ting ikke forsvinder. Så disse volumes peger simpelthen dine lokale mapper ind i din container som så kan læse disse filer.

Indlæs din Docker compose fil i CasaOS

Jeg bruger her CasaOS fordi det er det som følger med til Zimaboardet som dette er lavet på. Så denne del er ikke det samme for dig, så her skal du læse et andet sted hvordan du gør til dit system, hvis du ikke også bruger CasaOS.

I CasaOs skal du finde “App store” og gå derind. Derefter skal du finde “Custom install” der ligge i øverste højre hjørne og til slut skal du igen øverste højre hjørne finde “Import”, der er et ikon med en pil.

Her kan du så enten indsætte indholdet fra compose filen eller uploade den. Det er ligemeget hvad du gør, begge dele virker.

Du skal nu blot navngive din container, her vil jeg kalde den for “Webserver stack”, men du kan kalde den hvad du har lyst til.

Du burde nu have en fungerende nginx webserver hvor du kan begynde arbejde med hvad du nu havde planer om. For mig er det her blot en mulighed for lige at teste noget hurtigt, uden at skulle ind og fine FTP oplysninger.

Sådan redigerer du dine filer i din nye NGINX webserver

Hvis du har fulgt guiden og alt gik som det skulle, så skal du blot åbne “Files” i Casaos (forudinstalleret) og gå til mappen: DATA -> webserver ->nginx -> public_html

hvor du så kan oprette dine PHP filer eller hvad du nu laver.

Skriv en kommentar