Wir alle stoßen bei der Entwicklung auf dieses Problem: Nachdem eine Funktion lokal entwickelt wurde, kann sie unbrauchbar werden, wenn sie auf dem Server bereitgestellt wird oder wenn andere sie auf den lokalen Server ziehen, um mit der Entwicklung fortzufahren. Die meisten dieser Ausnahmen sind auf Abhängigkeitsunterschiede aufgrund unterschiedlicher Systeme zurückzuführen. Um dieses Problem zu lösen, muss daher eine einheitliche Entwicklungsumgebung auf Basis von Docker erstellt werden. Grundlegende Kenntnisse zu Docker finden Sie im Docker-Tutorial. 1. Vorteile der Verwendung von Docker Einfach zu implementieren Normalerweise dauert es lange, bis wir die Umgebung aufgebaut haben. Bei der Teamarbeit geht mit jedem Neuzugang vermeidbare Zeit verloren. Darüber hinaus treten beim Erstellen der Umgebung häufig verschiedene Probleme auf, die dazu führen, dass der Projektcode nicht ordnungsgemäß ausgeführt wird. Wenn Docker verwendet wird, muss nur die erste Person den Entwicklungscontainer schreiben, und andere müssen ihn nur herunterladen, um den Aufbau der Projektumgebung abzuschließen, wodurch sinnlose Zeitverschwendung effektiv vermieden werden kann. Isolierung Wir stellen häufig mehrere Projektumgebungen auf einem Computer bereit. Wenn sie direkt installiert werden, können sie sich gegenseitig stören. Beispielsweise erfordert ein Projekt Node.js 14, während ein anderes Node.js 12 erfordert. Wenn sie direkt auf dem lokalen Computer bereitgestellt werden, können sie nicht koexistieren. Wenn Docker verwendet wird, kann dieses Problem vermieden werden. Docker stellt außerdem sicher, dass jede Anwendung nur die ihr zugewiesenen Ressourcen (einschließlich CPU, Speicher und Festplattenspeicher) verwendet. Eine bestimmte Software nutzt nicht alle verfügbaren Ressourcen, was andernfalls zu einer Verschlechterung der Leistung oder sogar dazu führen könnte, dass andere Anwendungen überhaupt nicht mehr funktionieren. 2. Docker installieren1) Installieren Sie Docker unter LinuxAm Beispiel von Arch Linux zeigen sich ähnliche Distributionen, die allerdings unterschiedliche Paketverwaltungstools verwenden. # Richten Sie eine inländische Spiegelstation ein, die den inländischen Betrieb beschleunigt. Dies ist optional. $ sudo pacman-mirrors -i -c China -m rank # Installieren Sie Docker mit Pacman $ sudo pacman -S Docker # Erstellen Sie eine Docker-Benutzergruppe. Standardmäßig verwendet der Docker-Befehl einen Unix-Socket, um mit der Docker-Engine zu kommunizieren. Nur der Root-Benutzer und Benutzer in der Docker-Gruppe können auf den Unix-Socket der Docker-Engine zugreifen. Aus Sicherheitsgründen wird der Root-Benutzer auf Linux-Systemen grundsätzlich nicht direkt verwendet. Daher besteht ein besserer Ansatz darin, Benutzer, die Docker verwenden müssen, zur Docker-Benutzergruppe hinzuzufügen. $ sudo groupadd docker # Fügen Sie den aktuellen Benutzer zur Docker-Gruppe hinzu. Die Änderungen werden wirksam, nachdem Sie sich vom aktuellen Terminal abgemeldet und erneut angemeldet haben. $ sudo usermod -aG docker $USER # Testen Sie, ob die Installation erfolgreich ist $ docker run --rm hello-world 2) Windows 10Es ist relativ einfach, Docker unter Windows 10 zu installieren. Hierzu gibt es mehrere Möglichkeiten: Manueller Download und Installation: Laden Sie Docker Desktop für Windows herunter. Da der Download von der offiziellen Website langsam ist, können Sie auf diesen Link klicken, wenn Sie lokal herunterladen müssen Doppelklicken Sie nach dem Herunterladen auf Docker Desktop Installer.exe, um die Installation zu starten. Installation mit Winget: $ winget installiere Docker.DockerDesktop Führen Sie Docker aus: Geben Sie Docker in die Windows-Suchleiste ein und klicken Sie zum Starten auf Docker Desktop. Nachdem Docker gestartet wurde, wird in der Windows-Taskleiste ein Walsymbol angezeigt.
3) macOSInstallation mit Homebrew: Homebrews Cask unterstützt bereits Docker Desktop für Mac, daher ist die Installation mit Homebrew Cask einfach: $ brew install --cask Docker Manueller Download und Installation: Wenn Sie den Download manuell durchführen müssen, klicken Sie auf „Docker Desktop für Mac herunterladen“. Da der Download von der offiziellen Website langsam ist, können Sie auf diesen Link klicken, wenn Sie lokal herunterladen müssen Bitte achten Sie darauf, die Software entsprechend dem Chiptyp herunterzuladen. Die Versionen für M1- und Intel-Chips sind nicht universell. Wie bei anderer macOS-Software ist die Installation sehr einfach. Doppelklicken Sie auf die heruntergeladene .dmg-Datei und ziehen Sie dann das Walsymbol namens Moby in den Anwendungsordner (während dieses Vorgangs müssen Sie das Benutzerkennwort eingeben). Führen Sie Docker aus: Suchen Sie unter „Anwendungen“ nach dem Docker-Symbol und klicken Sie auf „Ausführen“. Nach dem Ausführen wird in der oberen rechten Ecke der Menüleiste ein Walsymbol angezeigt, das den Ausführungsstatus von Docker anzeigt. Nachdem die Installation abgeschlossen und gestartet ist, können wir die installierte Docker-Version über den Befehl im Terminal überprüfen. $ docker --version 3. Docker-Quellcode ändernDie Standardquelle von Docker ist fremd und die Geschwindigkeit des inländischen Zugriffs ist relativ langsam. Sie können daher zu einer inländischen Quelle wechseln, um die Geschwindigkeit beim Abrufen von Bildern zu erhöhen. 1) Änderung der Linux-QuelleUnter Linux ist es relativ einfach. Erstellen Sie einfach eine Datei deamon.json und notieren Sie die Konfiguration: $ vi /etc/docker/deamon.json # Eingabespiegelquelle { # Es ist auch möglich, nur eine Quelle zu ändern und anstelle eines Arrays direkt eine Zeichenfolge zu verwenden. "Registrierungsspiegel": [ „https://registry.docker-cn.com“, "http://hub-mirror.c.163.com", „https://docker.mirrors.ustc.edu.cn“ ], } # :wq Speichern, beenden und Docker neu starten $ systemctl Neustart Docker 2) Wechseln Sie zwischen Windows und MacSowohl Windows als auch Mac verwenden Docker Desktop, sodass Sie es direkt in der GUI konfigurieren können. Öffnen Sie die Docker-Oberfläche und klicken Sie auf Docker Engine: Geben Sie im Ausgabefeld rechts die Spiegelquelle ein: { "Registrierungsspiegel": [ „https://registry.docker-cn.com“, "http://hub-mirror.c.163.com", „https://docker.mirrors.ustc.edu.cn“ ], } 4. Dockerfile schreibenNach der Installation von Docker können wir dann unsere eigene Projektentwicklungsumgebung schreiben. In diesem Artikel wird die Front-End-Entwicklungsumgebung als Beispiel zum Erstellen einer Docker-Datei verwendet. Enthaltene Umgebung:
# In der Front-End-Entwicklung werden häufig Shell-Befehle benötigt, und eine relativ vollständige Umgebung ist wichtiger. Daher wird Ubuntu als Basis gewählt. Wenn Ihnen die Größe des Containers wichtig ist, können Sie das entsprechende Basisimage von Ubuntu auswählen ETIKETT org.opencontainers.image.authors="[email protected]" # Setzen Sie die Umgebungsvariable ENV DEBIAN_FRONTEND noninteractive # Zeitzone ARG TZ=Asia/Shanghai einstellen ENV TZ ${TZ} RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # Verwenden Sie den Root-Benutzer, um den USER-Root zu bedienen # Ändern Sie die Alibaba Cloud-Quelle, um den Prozess in China zu beschleunigen. RUN sed -i "s/security.ubuntu.com/mirrors.aliyun.com/" /etc/apt/sources.list && \ sed -i "s/archive.ubuntu.com/mirrors.aliyun.com/" /etc/apt/sources.list && \ sed -i "s/security-cdn.ubuntu.com/mirrors.aliyun.com/" /etc/apt/sources.list Führen Sie apt-get clean aus. # Aktualisieren Sie die Quelle und installieren Sie die entsprechenden Tools. RUN apt-get update && apt-get install -y \ zsh \ vim \ wget \ Locke \ Python \ Git-Kern # Installieren Sie zsh, damit Sie die Shell später bequemer verwenden können, wenn Sie den Container betreten Führen Sie git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh && \ aus. cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc && \ git-Klon https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && \ git-Klon https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting && \ sed -i 's/^plugins=(/plugins=(zsh-autosuggestions zsh-syntax-highlighting z /' ~/.zshrc && \ chsh -s /bin/zsh # Erstellen Sie meinen Benutzer RUN useradd --create-home --no-log-init --shell /bin/zsh -G sudo me && \ füge Benutzer hinzu, sudo && \ echo 'me:Passwort' | chpasswd # Installiere omz für mich BENUTZER ich Führen Sie git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh && \ aus. cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc && \ git-Klon https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && \ git-Klon https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting && \ sed -i 's/^plugins=(/plugins=(zsh-Autosuggestions zsh-Syntaxhervorhebung z /' ~/.zshrc # Installieren Sie nvm und node ENV NVM_DIR=/home/me/.nvm \ NODE_VERSION=v14 RUN mkdir -p $NVM_DIR && \ curl -o- https://gitee.com/mirrors/nvm/raw/master/install.sh | bash && \ . $NVM_DIR/nvm.sh && \ nvm installiere ${NODE_VERSION} && \ keine Sorge, verwenden Sie ${NODE_VERSION} && \ nvm-Alias ${NODE_VERSION} && \ ln -s `npm bin --global` /home/me/.node-bin && \ npm install --global nrm && \ nrm verwenden taobao && \ echo '' >> ~/.zshrc && \ echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.zshrc && \ echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # Dies lädt nvm' >> ~/.zshrc # Garn installieren RUN curl -o- -L https://yarnpkg.com/install.sh | bash; \ echo '' >> ~/.zshrc && \ echo 'export PATH="$HOME/.yarn/bin:$PATH"' >> ~/.zshrc # Fügen Sie NVM-Binärdateien zu Roots .bashrc hinzu BENUTZER root RUN echo '' >> ~/.zshrc && \ echo 'export NVM_DIR="/home/me/.nvm"' >> ~/.zshrc && \ echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # Dies lädt nvm' >> ~/.zshrc && \ echo '' >> ~/.zshrc && \ echo 'export YARN_DIR="/home/me/.yarn"' >> ~/.zshrc && \ echo 'export PATH="$YARN_DIR/bin:$PATH"' >> ~/.zshrc # PATH für Knoten und YARN hinzufügen ENV-PFAD $PATH:/home/me/.node-bin:/home/me/.yarn/bin # Löschen Sie apt/lists, um die endgültige Bildgröße zu reduzieren. RUN rm -rf /var/lib/apt/lists/* ARBEITSVERZEICHNIS /var/www Nachdem Sie das Dockerfile geschrieben haben, erstellen Sie es: Docker-Build -t Frontend/React:v1. Nach dem Erstellen können Sie direkt ausführen: # Als ich ausführen, empfohlene Methode: docker run --user=me -it frontend/react:v1 /bin/zsh # Als Root ausführen docker run -it frontend/react:v1 /bin/zsh 5. Schreiben Sie docker-compose.ymlWährend der Entwicklung müssen wir normalerweise mehrere Container zusammen verwenden, z. B. MySQL oder andere Container. Die Verwendung von docker-compose.yml kann sie besser organisieren. Version: '2' Leistungen: reagieren: bauen: Kontext: . Docker-Datei: reagieren/Docker-Datei tty: wahr Häfen: 30000: 3000 Bände: - ./reagieren/www:/var/www Netzwerke: -Frontend MySQL: Bild:mysql:5.7 Häfen: - 33060:3306 Bände: - ./mysql/data:/var/lib/mysql - ./mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d Umfeld: -MYSQL_ROOT_PASSWORD=Passwort Netzwerke: -Frontend #Legen Sie die Container in dieselben Netzwerke und greifen Sie direkt über den Containernamen auf die Netzwerke zu: Frontend: Treiber: Brücke 6. Starten Sie den ContainerNachdem Sie die obige Docker-Datei und docker-compose.yml geschrieben haben, können Sie fröhlich mit der Entwicklung beginnen! # Geben Sie das Verzeichnis ein, in dem sich docker-compose.yml befindet $ cd frontend # Starten Sie alle Container in docker-compose.yml im Hintergrund. Wenn der Container noch nicht erstellt ist, wird er zuerst erstellt. $ docker-compose up -d # Geben Sie den React-Container für die Befehlszeileninteraktion ein $ docker-compose exec --user=me react /bin/zsh Um zu testen, ob Container aufeinander zugreifen können, können Sie folgende Datei schreiben. Die Datenbank müssen Sie selbst erstellen: // index.js const mysql = erfordern('mysql') const-Verbindung = mysql.createConnection({ Host: "mysql", Benutzer: 'root', Passwort: „Passwort“, Datenbank: 'Test', }) Verbindung.verbinden(); connection.query(`SELECT * FROM users`, Funktion (Fehler, Ergebnisse, Felder) { wenn (Fehler) Fehler auslösen; console.log(Ergebnisse) }) Verbindung.Ende(); Führen Sie es dann aus und Sie können das Ergebnis sehen: $ Knotenindex.js [ RowDataPacket { id: 1, name: 'Caster' } ] 7. FazitEs ist sehr praktisch, Docker zum Erstellen einer Entwicklungsumgebung zu verwenden. Einmal erstellt, kann es mehrfach auf vielen Maschinen verwendet werden. Selbst wenn Sie das System neu installieren müssen, müssen Sie die Konfiguration nicht wiederholen. Wenn Sie nicht gerne Dockerfile schreiben, können Sie auch direkt einen Container starten, den Container aufrufen, ihn konfigurieren und ihn dann mit Docker Save/Export exportieren. Quellen: 1. Docker-Tutorial 2. Docker erstellt eine Entwicklungsumgebung Damit ist dieser Artikel zum Erstellen einer Entwicklungsumgebung (Windows und Mac) mit Docker abgeschlossen. Weitere Informationen zum Erstellen einer Entwicklungsumgebung mit Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Problem beim doppelten Laden, wenn die Seite img src enthält
>>: Beispielcode zur Implementierung von horizontalem Endlos-Scrollen mit reinem CSS3
Die einfachste Store-Anwendung in Vue ist die glo...
1. Befehlseinführung Der Befehl „Watch“ führt den...
1. Installieren Sie vue-cli npm ich @vue/cli -g 2...
Inhaltsverzeichnis verifizieren: Kombiniert mit d...
Inhaltsverzeichnis 1. Beispiel 2. Erstelle 100 So...
Ich habe mich beim Backend angemeldet, um die Lös...
Verwenden Sie hauptsächlich die Eigenschaften „pr...
Frage Wie ändere ich den CSS-Pseudoklassenstil mi...
Inhaltsverzeichnis Mehrere MySQL-Instanzen Übersi...
Als ich kürzlich die Zabbix-Datenbank von MySQL 5...
Inhaltsverzeichnis Ergebnisse erzielen Einführung...
1. Vorbereitung 1.1 Laden Sie das komprimierte To...
Rechtsklickmenü deaktivieren <body oncontextme...
1. Zusätzlich zum Standardport 8080 versuchen wir...
Wenn die DataSource-Eigenschaft eines DataGrid-Ste...