GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Poskytujte NGINX na Dockeru a rozšiřte možnosti serveru

Kontejnerování pracovních zátěží webových serverů, jako je NGINX, se stalo běžným v moderním IT průmyslu. NGINX vytváří perfektní kontejnerový pracovní postup a spojení NGINX s Dockerem je naprosto logický úkol.

V tomto tutoriálu se dozvíte, jak zřídit nový NGINX na kontejneru Docker běžícím na jakémkoli operačním systému, jako je Windows, macOS nebo Linux!

Předpoklady

Chcete-li pokračovat v tomto tutoriálu, ujistěte se, že máte následující:

  • Docker Desktop – Tento výukový program používá verzi 3.5.1.
  • Windows 10 – Výukový program používá Windows ke spuštění Dockeru, ale stejné obecné kroky lze použít také pro Linux nebo macOS.
  • Motor Docker, pokud používáte Linux.

Zřízení NGINX na kontejneru Docker

Začněme tím, že nejprve vytvoříme obraz Linux Docker s již nainstalovaným NGINX. Tento výukový program bude používat minimální distribuci Linuxu nazvanou Alpine Linux s nejnovější dostupnou verzí NGINX, která je v tomto výukovém programu 1.21.1.

1. Nejprve otevřete relaci terminálu, kde spustíte všechny potřebné příkazy Dockeru.

2. Spusťte docker pull příkaz k načtení nebo pull , nejnovější nginx obrázek z úložiště NGINX Docker Hub pomocí mainlin-alpine větev. Docker Hub je open-source úložiště obrázků Docker dostupné uživatelům Dockeru.

docker pull nginx:mainline-alpine

Načtení nejnovějšího obrazu je skvělé pro vývoj a testování, ale často je nejlepší produkční praxí zadat konkrétní verzi, jako je docker pull nginx:1.21.0-alpine .

3. Dále spusťte docker run příkaz ke spuštění kontejneru z nginx:mainline-alpine obrázek.

  • -i – Tento parametr vyžaduje interaktivní konzolu, která vrací výstup interního kontejneru do terminálu.
  • -t – Zde požádáte o konzolu Pseudo-TTY pro běžící kontejner, která umožňuje použití klíčového příkazu ctrl-c k ukončení interaktivního kontejneru.
  • --name – Název tohoto běhu kontejneru musí být jedinečný pro každý nový kontejner (pokud nebudou odstraněny předchozí kontejnery se stejným názvem).
  • -p – Jaký interní port na externí použít, což je v tomto případě interní port 80 by měl být mapován na externí port 80 .
  • „název obrázku“ – Z jakého obrázku Dockeru se má kontejner poskytnout, v tomto případě z dříve vytaženého nginx:mainline-alpine obrázek.
docker run -i -t --name nginx-mainline -p 80:80 nginx:mainline-alpine

4. Ve webovém prohlížeči přejděte na http://localhost a přejděte do spuštěného kontejneru Docker . Pokud bude úspěšný, zobrazí se výchozí uvítací stránka NGINX. Protože v předchozím kroku jste spustili mapování kontejneru externího portu 80 na port kontejneru 80 (-p 80:80 ), NGINX by měl být k dispozici.

5. Nakonec znovu otevřete konzolu příkazového řádku a stiskněte kombinaci kláves ctrl-c k opuštění běžícího kontejneru. Stále máte na čem pracovat!

Mapování souborů webových stránek do kontejneru

V tomto okamžiku můžete snadno vyvolat kontejner NGINX Docker s ukázkovou webovou stránkou. Nyní musíte nahrát svůj vlastní web do NGINX. Vzhledem k tomu, že kontejnery jsou neměnné a při opětovném vytvoření v nich odstraní všechny změny, musíte poskytnout zdroj webu mimo obrázek Docker.

Webový server NGINX běžící na Linuxu ukládá soubory webových stránek do /usr/share/nginx/html adresář. Namísto nahrávání souborů přímo do tohoto adresáře byste měli namapovat umístění úložiště na toto umístění, aby kontejner při spouštění vytáhl tyto soubory z umístění úložiště.

Na vašem místním hostitelském operačním systému:

1. Nejprve vytvořte adresář, který chcete namapovat na kontejner NGINX Docker. V tomto příkladu C:\Articles\NGINX se používá k mapování na /usr/share/nginx/html.

2. V nově vytvořeném adresáři vytvořte soubor index.html , který obsahuje následující. Tento soubor bude souborem, který NGINX zobrazí při navigaci na web.

<html>
    <head></head>
    <body>
        <h1>ATA Test!</h1>
        <p>Welcome to your custom NGINX index file.</p>
    </body>
</html>

3. Dále na příkazovém řádku vyvolejte docker run s téměř všemi stejnými parametry jako v kroku tři v předchozí části. Tentokrát však zahrňte parametr hlasitosti -v Jak je ukázáno níže.

V níže uvedeném příkladu -v parametr mapuje místní C:\Articles\NGINX do adresáře obrázku /usr/share/nginx/html adresář. Vytvoření tohoto mapování vám umožní upravit obsah /usr/share/nginx/html adresář kontejneru úpravou obsahu C:\Articles\NGINX adresář.

To ukazuje umístění souboru systému Windows, ale tento příkaz funguje stejně v systému Linux. Například -v /usr/share/myfiles:/usr/share/nginx/html .

docker run -i -t -v c:\Articles\NGINX:/usr/share/nginx/html --name nginx-mainline -p 80:80 nginx:mainline-alpine

4. Nakonec otevřete webový prohlížeč a přejděte na http://localhost . Na základě nově vytvořeného index.html se zobrazí následující protože nyní stahuje soubory z místního C:\Articles\NGINX adresář.

Spuštění aplikace PHP-FPM s kontejnerem Docker NGINX

Nyní můžete vyvolat kontejner NGINX Docker a snadno upravit obsah webu. Pokud potřebujete superzákladní nastavení, může to fungovat. Pokud však plánujete provozovat webovou aplikaci na NGINX, musíte udělat trochu více práce.

Jako příklad povolme právě vytvořenému obrazu NGINX spouštět populární webový skriptovací jazyk PHP pomocí PHP FastCGI Process Manager (FPM).

Pro tuto sekci je třeba zavést několik nových pojmů. Chcete-li snadno definovat sadu kontejnerů a jejich propojení, je nejlepší použít soubor Docker Compose. Docker Compose definuje řadu služeb a souvisejících aplikací v souboru YAML (Yet Another Markup Language).

Navíc, protože potřebujete zkopírovat vlastní konfigurační soubor pro výchozí web, do kontejneru NGINX, vlastní verze nginx:mainline-alpine obrázek je potřeba. Chcete-li rozšířit existující obrázek, dockerfile se používá a sestavuje pomocí build krok v souboru Docker Compose.

1. Vytvořte adresář, který bude obsahovat vaše konfigurační soubory. V tomto příkladu adresář C:\Articles\NGINXPHP se používá.

2. Nejprve vytvořte soubor dockerfile , s následujícím obsahem.

# The image to pull the base configuration from
FROM nginx:mainline-alpine
# The directory where any additional files will be referenced
WORKDIR C:\Articles\NGINXPHP
# Copy the custom default.conf from the WORKDIR (.) and overwrite the existing internal configuration in the NGINX container
COPY ./default.conf /etc/nginx/conf.d/default.conf

3. Dále vytvořte soubor docker-compose.yml soubor, obsahující následující.

# The specification version of docker-compose
version: "3.9"
# The collection of applications composing this service
services:
  # The NGINX custom container
  web:
    # Instead of referencing image: nginx:mainline-alpine here, use build to
    # reference the current directory (.), which will look for a dockerfile
    # by default
    build: .
    # The external directory location to map to an internal location
    volumes:
      - C:\Articles\NGINXPHP:/usr/share/nginx/html
    # The external port mapping to internal port mapping
    ports:
      - "80:80"
  php:
    image: php:fpm-alpine
    # It is important that both containers can reference the same files
    volumes:
      - C:\Articles\NGINXPHP:/usr/share/nginx/html

4. Nakonec vytvořte konfigurační soubor NGINX default.conf , s následujícím.

server {
    # The port to listen on
    listen 80;
    # The root directory, which must exactly match the internal volume share
    root /usr/share/nginx/html;

    # For all files with the PHP extension run the following
    location ~ ^/.+\.php(/|$) {
        # Pass the request to the host "php" and port 9000 (default PHP-FPM port)
        fastcgi_pass  php:9000;
	# Include the default NGINX FastCGI Parameters
        include       fastcgi_params;
	# Define one additional parameter telling PHP-FPM where to find the file
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Můžete se divit, kde se vzalo „PHP“ pro název hostitele. Ve výchozím nastavení je síť sdílená všemi aplikacemi obsaženými ve službě vytvořena pomocí názvu nadřazeného adresáře. Každému kontejneru je přiřazen název hostitele rovný názvu aplikace. V tomto příkladu je síť nginxphp a názvy hostitelů jsou web a php .

5. V relaci terminálu přejděte do svého vlastního adresáře konfiguračního souboru Docker, což je v tomto příkladu C:\Articles\NGINXPHP . Spusťte příkaz docker-compose up vygenerovat a spustit vlastní službu.

6. Nyní, když je sada kontejnerů připravena a spuštěna, potřebujete soubor PHP k otestování konfigurace. Vytvořte soubor index.php , ve vašem sdíleném adresáři NGINX Docker, což je C:\Articles\NGINXPHP v tomto tutoriálu.

<?php phpinfo(); ?>

7. Otevřete webový prohlížeč a přejděte na http://localhost/index.php a ověřte, zda je soubor PHP správně zobrazen.

Závěr

Kontejnery Docker NGINX jsou neuvěřitelně užitečné pro testování a vývoj. S náležitou péčí a pozorností mohou kontejnery Docker pomoci výrazně zvýšit také možnosti produkčního webového serveru!

Nyní, když jste úspěšně zřídili kontejner NGINX a propojený kontejner PHP-FPM, zkuste přidat databázový kontejner do mixu pro plnohodnotné prostředí webové aplikace.


Docker
  1. Monitorujte linuxový server pomocí Prometheus a Grafana

  2. Jak nainstalovat a hostovat server OpenVPN pomocí Dockeru

  3. Co je Docker (a Linux kontejnery?)

  1. Webový server Nginx Docker image založený na Debian GNU/Linux

  2. Jak zabalit a přenést obrazy Dockeru z jednoho serveru na druhý

  3. Jak nastavit bloky serveru Nginx na Ubuntu a CentOS

  1. Instalace Nginx na Ubuntu 14.04 a 16.04

  2. Jak nainstalovat a nakonfigurovat Nginx na Ubuntu 18.04 / Debian 9

  3. Nainstalujte Redmine na server Ubuntu 14.04 s MariaDB, Puma a Nginx.