Kør Nginx i en Docker Container på Ubuntu server
I denne artikel vil vi se på hvordan man kan køre Nginx i en Docker Container.
Jeg har tidligere skrevet om hvordan man installerer Nginx på DigitalOcean. Nginx (udtales Engine X) er en webserver som kan bruges til server for hjemmesider. Jeg er dog på det seneste begyndt at bruge Docker i stedet for at installere det hele fra bunden. Derfor vil jeg i denne artikel vise hvordan man installerer Nginx via Docker i stedet for.
Du starter med at oprette en Droplet på DigitalOcean eller anden VPS. Jeg har via Marketplace valgt den med Ubuntu server samt Docker og Docker Composer installeret. Herefter skal du bruge en SSH terminal. Hvis du bruger Windows kan jeg anbefale den der hedder Termius, den har jeg gode erfaringer med.
Du starter med at installere Nginx med følgende kode.
docker pull nginx
Nu skal Docker containeren køres og den skal gøres offentlig, så du kan tilgå den fra en webbrowser, idet der her er tale om en webserver.
docker run --name docker-nginx -p 80:80 nginx
Vi opretter en ny Docker container med navnet “docker-nginx” hvor vi kører Nginx i. Så åbner vi port 80 (det første tal er for den lokale server og det andet for containeren). Og endelig angiver vi at det er nginx imaget der skal køres. Når dette er gjort, skulle du allerede nu kunne tilgå Nginx fra din browser ved at indtaste IP adressen:
Du kan nu få et overblik over de Docker containere der er installeret på serveren:
docker ps -a
Hvilket vil se ud på følgende måde på nuværende tidspunkt.
Så nemt er det at installere Nginx via Docker. Du kan til enhver tid stoppe og fjerne Docker containeren med koden:
docker stop docker-nginx
docker rm docker-nginx
Dette giver bl.a. mulighed for at oprette en ny container igen. Det får vi brug for nu, fordi nu skal vi definere hvor webside-filerne skal ligge på vores Nginx server. Vi starter med at oprette en ny mappe og går til mappen:
mkdir -p ~/docker-nginx/html
cd ~/docker-nginx/html
Så opretter vi en ny index.html fil i den mappe:
nano index.html
Nu kan du lave en html fil som skal erstatte den standardside der blev vist for lidt tid siden. Det kunne fx. være:
<html>
<head>
<title>Hello World</title>
</head>
<body>
<div class="container">
<h1>Hello World</h1>
<p>Det virker!</p>
</div>
</body>
</html>
Gem ved at trykke CTRL+X og y for yes og så enter. Nu opretter vi så en ny Docker container, hvor vi tilføjer en volume, hvor vi kobler den mappe vi lige har oprettet sammen med den installerede mappe i selve containeren. Når man tilgår mappen i containeren, går den virtuelt ind og henter filerne på den mappe vi har markeret.
docker run --name docker-nginx -p 80:80 -d -v ~/docker-nginx/html:/usr/share/nginx/html nginx
Nu kan du prøve at gå ind på IP-adressen igen, og så vil du se at siden er blevet opdateret.
Du kan også lave din egen lokale config fil for Nginx, ved først at kopiere den ind i din lokale mappe:
docker cp docker-nginx:/etc/nginx/conf.d/default.conf default.conf
Den fil kan du ændre som du vil. Nu skal vi oprette en ny Docker Nginx container, hvor vi udover den volume vi har lavet med filerne laver det samme for config filen. Husk at stoppe og fjerne den gamle container først.
docker run --name docker-nginx -p 80:80 -v ~/docker-nginx/html:/usr/share/nginx/html -v ~/docker-nginx/default.conf:/etc/nginx/conf.d/default.conf -d nginx
Når du ændrer i Nginx config-filen skal du altid genstarte Nginx. Det gør du med koden:
docker restart docker-nginx
Jeg håber dette gav en introduktion til hvordan du installerer Nginx via Docker. Skriv gerne nedenunder hvis du har spørgsmål.