Eine der besten Möglichkeiten, Docker zum automatischen Erstellen von Images zu automatisieren, ist die Verwendung eines Dockerfiles. Ein Dockerfile ist ein einfaches Textdokument, das alle Befehle enthält, die ein Benutzer auf der Befehlszeile aufrufen kann, um ein Image zusammenzustellen.
In diesem Tutorial zeigen wir Ihnen Schritt für Schritt, wie Sie ein Dockerfile für die nodeJS-Anwendung erstellen, Dockerignore erstellen und docker-compose.
Dockerfile, Dockerignore und Docker Compose erstellen
1. Dockerfile
Wir werden das Dockerfile im Quellverzeichnis erstellen.
vim Dockerfile
Definieren Sie zunächst, von welchem Bild aus wir den Build starten möchten. Hier habe ich mein alpines Linux-Docker-Image hinzugefügt, das nodejs10 und NPM enthält. Folgen Sie unserem Docker-Image- und Docker-Hub-Leitfaden, um Docker-Images zu erstellen und sie zum Docker-Hub zu ziehen.
VON ddarshana/alpinenode10
Der Befehl MAINTAINER zeigt den Autor der generierten Bilder an.
MAINTAINER Darshana ([email protected])
Der RUN-Befehl wird verwendet, um beliebige Befehle auszuführen. Hier installieren wir ein curl-Paket unter Alpine Linux.
RUN apk add --update curl && rm -rf /var/cache/apk/*
Erstellen Sie ein neues Verzeichnis namens App, die den Anwendungscode im Bild enthalten wird.
RUN mkdir /app
Mit der Direktive WORKDIR wird eingestellt, wo der mit CMD definierte Befehl ausgeführt werden soll.
ARBEITSVERZEICHNIS /app
Paket kopieren.json-Datei.
Paket KOPIEREN.json .
NodeJS-Anwendung und Abhängigkeiten installieren.
npm-Installation ausführen
Bundle-App-Quelle.
KOPIEREN…
Laden Sie die Umgebungsvariablendatei herunter. In unserem Fall haben wir einen separaten Ort, um globale Konfigurationen zu speichern.
RUN curl -O https://demofiles.fosslinux/nodejs/.env
Führen Sie die Anwendung aus, und sie wird auf dem standardmäßigen 3000-Port gestartet.
CMD ["npm", "start"]
Hier ist unser vollständiges Dockerfile.
VON ddarshana/alpinenode10 MAINTAINER darshana ([email protected]) # "curl"-Paket installieren RUN apk add --update curl && rm -rf /var/cache/apk/* # App-Verzeichnis erstellen RUN mkdir /app WORKDIR /app # Paket kopieren.json COPY-Paket.json . # App-Abhängigkeiten installieren RUN npm install # App-Quelle bündeln KOPIEREN… # Umgebungsvariablendatei von unserem Netzwerkspeicherort herunterladen RUN curl -O https://demofiles.fosslinux/nodejs/.env # APP CMD ausführen ["npm", "start"]
Datei speichern und beenden. Hier ist mein NodeJs App Code-Verzeichnis.
2. Erstellen einer Dockerignore-Datei
Die Verwendung der Datei „dockerignore“ verhindert, dass unsere lokalen Module und andere unerwünschte Dateien auf das Docker-Image kopiert werden und die Möglichkeit, in Ihrem Image installierte Module zu überschreiben. Wir empfehlen Ihnen dringend, es zusammen mit Dockerfiles zu verwenden.
Die Dockerignore-Datei sollte sich im selben Verzeichnis wie die Dockerfile befinden.
vim .Dockerignorieren
Hier haben wir folgende Inhalte hinzugefügt:
.env Dockerfile node_modules test .vscode .eslintrc.js
Datei speichern und beenden.
Erstellen Sie ein Docker-Image
Docker-Build . -t fosslinuxdemo/nodejsapp
Es sollte einige Zeit dauern, bis der Vorgang abgeschlossen ist. Bitte haben Sie Geduld.
Docker-Images auflisten
Führen Sie den folgenden Befehl aus, um Bilder aufzulisten:
Docker-Bilder
Docker-Image ausführen
docker run -itd -p 3000:3000 fosslinuxdemo/nodejsapp
-itd:- führt den Container im Hintergrund aus
-p:- Flag leitet einen öffentlichen Port zu einem privaten Port innerhalb des Containers um
4. Docker Compose
Compose ist ein Tool zum Definieren und Ausführen von Docker-Anwendungen mit mehreren Containern. Bei Compose verwenden wir eine YAML-Datei, um die Anwendungsdienste zu konfigurieren configure. Danach erstellen und starten wir mit einem einzigen Befehl alle Dienste aus unserer Konfiguration start.
Compose installieren
Bevor Sie den Composer installieren, müssen Sie zunächst Docker installieren.
Führen Sie diesen Befehl aus, um die aktuelle stabile Version von Docker Compose herunterzuladen:
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Wenden Sie ausführbare Berechtigungen auf die Binärdatei an:
chmod +x /usr/local/bin/docker-compose
Testen Sie die Installation:
docker-compose --version
5. Installation von WordPress und MySQL mit Docker Compose
Erstellen Sie einen Ordner für Ihr Projekt:
mkdir /opt/fosslinuxdemo
Gehen Sie in das erstellte Verzeichnis:
cd /opt/fosslinuxdemo
Hier erstellen wir Datenverzeichnisse für unseren MySQL-Container und WordPress-Container.
mkdir-Daten mkdir html
Wir werden die oben genannten Verzeichnisse in unsere Container einhängen.
Erstellen Sie eine Composer-Datei:
vim docker-compose.yml
Hier ist unsere Docker-Compose-Datei. Kopieren Sie den folgenden Inhalt in Ihre Datei.
Version: '3.7' Dienste: db: container_name: fosslinux-mysql Neustart: immer Image: mysql:5.7 Volumes: - /opt/fosslinuxdemo/data:/var/lib/mysql Befehl: --default-authentication-plugin=mysql_native_password Umgebung: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD:3306:3306: -" Netzwerke: - fosslinux_net wp: container_name: fosslinux-wp Neustart: immer Volumes: - "/opt/fosslinuxdemo/html:/var/www/html" abhängig_on: - db-Image: WordPress-Ports: - "80:80" Umgebung: WORDPRESS_DB_HOST : db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: WordPress-Netzwerke: - fosslinux_net-Netzwerke: fosslinux_net:
Beachten Sie die Versionsnummer. Weitere Details zur Versionierung @ Composer-Dateiversion.
Version: '3.7'
Dienste: DB:
Ein Dienst in Compose ist ein laufender Container, und Dienstdefinitionen geben Informationen darüber an, wie jeder Container ausgeführt wird. Unsere Service-Definition „db“ bietet verschiedene Möglichkeiten.
container_name: fosslinux-mysql
- Gibt einen Namen für den Container an
Neustart: immer
- Definiert die Container-Neustart-Richtlinie
Bild: mysql: 5.7
- MySQL 5.7 offizielles Docker-Image
- WordPress Offizielles Docker-Image
Bände: https://hub.Docker.com/_/mysql - /opt/fosslinuxdemo/data:/var/lib/mysql
Hier mounten wir das Volume „/opt/fosslinuxdemo/data“ in das Verzeichnis „/var/lib/mysql“ auf dem Container. Im Allgemeinen ist es das Standard-Datenverzeichnis für MySQL auf den meisten Distributionen.
Befehl: --default-authentication-plugin=mysql_native_password
Diese Option gibt einen Befehl an, um den Standard-CMD-Befehl für das Bild zu überschreiben.
Umgebung:
Umgebungsvariablen definieren. Hier setzen wir MySQL-Variablen.
Ports: - "3306:3306"
- Port-Mapping.
Netzwerke: - fosslinux_net
- Definiert ein Netzwerk für den Container
hängt_von: - db
Dies stellt dar, dass unsere Container in der Reihenfolge der Abhängigkeit beginnen, wobei der Container „wp“ nach dem Container „db“ beginnt.
Jetzt können wir unsere Umgebung gestalten.
docker-compose up -d
-d-Flag, das Container im Hintergrund ausführt.
Docker-Container auflisten:
docker ps -a
Überprüfen Sie die Protokolle des WordPress-Containers:
Docker-Protokolle -f fosslinux-wp
Gehen Sie nun zum Webbrowser und geben Sie Ihre IP ein, um das WordPress-Installationsfenster zu erhalten.
Klicken Sie weiter auf, fahren Sie fort und schließen Sie den WordPress-Installationsprozess ab.
Das ist alles über die Arbeit mit Dockerfiles und Docker Compose. Ich hoffe dir hat der Artikel gefallen.