Kintone-Klon? Ich war ziemlich süchtig danach, die OSS WebDB-Erweiterung mit Lightsail + Docker zu starten. Notieren Sie sich dies.

Exment ist was?

2020-09-08_11h46_18.png Exment ist ein Web-DB-System von Laravel (dh LAMP, was bedeutet, dass es auch auf Mietservern funktioniert). Sie können eine relationale Datenbank über den GUI-Verwaltungsbildschirm betreiben.

Exment ist OSS und eine GPL-Lizenz. Die Entwicklung konzentriert sich auf Kajitori Co., Ltd. Weitere Informationen finden Sie im Artikel des Entwicklers (https://qiita.com/hirossyi73/items/b6280901c394216c07b8).

Wenn Sie an GUI Web DB denken, denken Sie vielleicht an Cybozu's Kintone.

Ich kann nicht einmal den Kintone-Charakter vom Entwickler hören, aber ich denke heimlich, dass es ein Kintone-Klon ist, und ich denke, dass es ein OSS-Produkt mit beträchtlichem Potenzial ist.

Um ehrlich zu sein, ich mag es sehr, aber ich werde meine Lieblingspunkte in diesem Artikel nicht erklären. Zu einem anderen Anlass.

Ich möchte Exment so günstig wie möglich in der Cloud betreiben!

Vor Ort können Sie Exment mit Docker testen. Danke, dass du es geschafft hast!

Als ich es tatsächlich lokal ausprobierte (bestätigt mit macOS Mojave und Windows 10 Home WSL2), war es einfach. Es ist wunderbar.

Dann liegt es in der Natur des Menschen, es in der Cloud hosten und von außen darauf zugreifen zu wollen.

Ich dachte an verschiedene Hosting-Ziele. Nur für das Front-End gibt es kostenlose Dienste wie Netlify und Vercel, aber leider ist dies ein Back-End-System ...

Wie bereits erwähnt, kann Exment auch auf einem Mietserver betrieben werden.

Installationsverfahren mit Rensaba wie Sakura und X-Server wird auf der offiziellen Exment-Website veröffentlicht, aber leider ist das Konto von Sakura und X-Server geöffnet. Ich habe es nicht Mit anderen Worten, ich habe keinen Rensaba-Vertrag. (Netlify und Vercel haben einige persönliche Produkte in der Nähe der Rezeption.)

Ich frage mich, ob es möglich ist, eine Rensaba nur für Exment zu mieten. Ist VPS also nicht besser? Durch verschiedene Untersuchungen wurde mir klar, dass das Lightsail von Amazon perfekt für meinen Einsatz ist.

(Der Autor ist VPS, AWS Jungfrau zu diesem Zeitpunkt)

Holen Sie sich jetzt ein Lightsail-Konto und legen Sie los!

Von der Anmeldung bei Lightsail bis zur Erstellung einer Instanz werden die folgenden Artikel detailliert beschrieben.

Dieses Mal habe ich die billigste 512 MB RAM-Instanz für 3,5 USD / Monat ausgewählt. Das Thema soll so billig wie möglich sein. Wenn die Spezifikationen nicht ausreichen, ist es eine Haltung, sich zu vergrößern und darüber nachzudenken, wie man damit umgeht.

Lightsail hat eine Instanzvorlage, die aus einer Reihe von Webanwendungen wie WordPress besteht, aber natürlich gibt es keine Exment-Vorlage, die noch bekannt ist.

Wählen Sie daher eine Instanz nur für das Betriebssystem aus. Dieses Mal habe ich mich für CentoOS7 entschieden.

Möchten Sie es unter CentOS installieren? Oder ...?

Exment veröffentlicht offiziell das Verfahren zur Installation unter CentOS 7, und es gibt auch einen Artikel, um es zu verstärken. (Siehe unten)

Wie Sie der Formel entnehmen können, gibt es jedoch einige Schritte. Also habe ich es tatsächlich einmal gemacht. Während ich die Umgebung wegwerfe und mehrmals von vorne anfange, wird es zu "Ich kann dieses Verfahren nicht jedes Mal durchführen!" Und ich denke über andere Methoden nach.

** Nein, warum nicht einfach Docker drauf setzen? ** ** **

Führen Sie Exment mit Lightsail + Docker aus (https ist ebenfalls verfügbar!)

Von hier aus werde ich das Verfahren einschließlich der Problemumgehungen anhand der Suchtpunkte beschreiben. Wenn Sie dies befolgen, können Sie die Erweiterung auf Lightsail + Docker in kürzester Zeit erreichen.

Installieren Sie nach dem Erstellen einer Instanz unter CentOS7 Docker, Docker-compose und git

Dann werde ich alles installieren.

Es ist schwer, jedes Mal Sudo anzulegen, deshalb werde ich Wurzel.

Um mit Lightsail Fuß zu fassen, habe ich mich auf diesen Artikel bezogen.

$ sudo su -

Installieren Sie Docker. Dieser Artikel ist detailliert.

[root@ip-172-xx-xx-x ~]# yum install -y docker          #Docker installieren
[root@ip-172-xx-xx-x ~]# service docker start           #Starten Sie Docker
[root@ip-172-xx-xx-x ~]# groupadd docker                #Ermöglichen Sie die Ausführung mit Benutzerrechten
[root@ip-172-xx-xx-x ~]# usermod -g docker centos       #Fügen Sie der erstellten Gruppe Centos-Benutzer hinzu
[root@ip-172-xx-xx-x ~]# sudo /bin/systemctl restart docker.service
[root@ip-172-xx-xx-x ~]# docker info        

Sie haben jetzt Docker installiert. Als nächstes kommt Docker-Compose.

[root@ip-172-xx-xx-x ~]# curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
[root@ip-172-xx-xx-x ~]# chmod +x /usr/local/bin/docker-compose
[root@ip-172-xx-xx-x ~]# docker-compose --version

Zum Schluss installieren Sie Git. Das Git, das mit yum von CentOS7 geliefert wird, ist 1.8.2 und die alte Version. Wenn Sie interessiert sind, lesen Sie bitte den folgenden Artikel und fügen Sie einen neuen hinzu. Dieses Mal möchte ich nur git clone, also werde ich es mit yum so wie es ist installieren.

[root@ip-172-xx-xx-x ~]# yum install -y git

Sie haben jetzt auch Git installiert.

Swap Space erstellen

Da es sich um eine Instanz von 512 MB RAM handelt, ging mir der Speicher aus, als ich mit Docker zu MySQL wechselte. (Suchtpunkt 1), also erstellen wir zuerst einen Swap-Bereich.

Ich habe auf den folgenden Artikel verwiesen, wie man einen Tausch macht.

[root@ip-172-xx-xx-x ~]# dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress

Ich war ziemlich süchtig danach, weil ich beim Schreiben des Befehls einen Fehler gemacht habe (Suchtpunkt 2).

Es ist eine gute Erinnerung, dass ich nicht wusste, was Datei / dev / zero und rm -rf im Prozess des Versuchs und Irrtums ist.

Ich habe auf diesen Artikel verwiesen, um / dev / zero wiederzubeleben.

[root@ip-172-xx-xx-x ~]# mknod -m 666 /dev/zero c 1 5
[root@ip-172-xx-xx-x ~]# chown root:mem /dev/zero

Die Option "status = progress", aber diesmal ist der Swap-Bereich so groß wie 4G, sodass ich mir Sorgen mache, dass das Terminal für eine Weile stumm bleibt. Deshalb habe ich eine Option hinzugefügt, um Sie über den Fortschritt des Befehls dd zu informieren. Ich verweise auf den folgenden Artikel.

Sobald der Swap Space mit dd erstellt wurde, fahren Sie mit dem Rest der Arbeit ruhig fort.

[root@ip-172-xx-xx-x ~]# chmod 600 /swapfile #Berechtigungen ändern
[root@ip-172-xx-xx-x ~]# mkswap /swapfile #Swap erstellen
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=d0519bf6-8abf-4c0d-9375-8068c9e5e9a1
[root@ip-172-xx-xx-x ~]# swapon /swapfile #Swap-Aktivierung
[root@ip-172-xx-xx-x ~]# free -m #Bestätigung tauschen

Schließlich machen Sie den Swap dauerhaft. Öffnen Sie / etc / fstab mit vi und

/swapfile                                 swap                    swap    defaults        0 0

Das ist es.

Verwenden Sie den Git-Klon, um docker-compose.yml und Dockerfile aufzunehmen.

Abholung von Github von der Person, die den Exment Docker erstellt hat, die zuvor vorgestellt wurde.

[root@ip-172-xx-xx-x /home/centos/]# git clone https://github.com/yamada28go/docker-exment.git

Ich denke, der Speicherort kann überall sein, aber ich habe ihn direkt unter dem Standardbenutzerverzeichnis erstellt.

Was ist mit https?

Wenn es um https in Docker geht, scheint https-portal berühmt zu sein.

Als ich Exment mit ** https-portal zuerst installiert habe, hat es zunächst nicht funktioniert! !! !! (Suchtpunkt 3) **

Fahren Sie daher vor dem Einrichten von SSL mit der Installation von Exment im Nicht-SSL-Status fort.

Möchten Sie vorerst docker-compose.yml lesen?

docker-compose.yml


version: '3'
services:
  nginx:
    image: nginx:latest
    ports:
      - 8080:80
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      - www-data:/var/www
    depends_on:
      - php

  php:
    build: ./php
    volumes:
      - www-data:/var/www
    depends_on:
      - db

  db:
    image: mysql:5.7
    ports:
      - 13306:3306
    volumes:
      - mysql-data:/var/lib/mysql
    environment:
      MYSQL_DATABASE: exment_database
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_USER: exment_user
      MYSQL_PASSWORD: secret

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    ports:
      - 8888:80
    depends_on:
      - db

#Volumes definieren
volumes:
  #Geben Sie den Namen des Volumes an
  #Installationspfad des Exments
  www-data:
    #Stellen Sie ture ein, um ein Volume anzugeben, das bereits außerhalb von Compose erstellt wurde.
    #Dann Docker-Compose versucht beim Erstellen nicht, ein Volume zu erstellen.
    #Und wenn das angegebene Volume nicht vorhanden ist, wird ein Fehler ausgelöst.
    #external: true
  #mysql db Installationspfad
  mysql-data:

Da das https-Portal später Port 80 verwendet, ist es praktisch, dass nginx 8080 ist. Insbesondere werde ich nichts so bearbeiten, wie es ist.

docker-compose.yml und Dockerfile berühren nichts, sondern nur php.ini fügt eine Zeile hinzu.

In der letzten Zeile

memory_limit=-1

Ich werde hinzufügen (zusätzlicher Punkt 4, Details werden später beschrieben)

Endlich ...

[root@ip-172-xx-xx-x /home/centos/]# docker-compose up -d

Da dies das erste Mal ist, wird das Image abgerufen, erstellt und das Volume erstellt.

Verwenden Sie nach Abschluss des Startvorgangs "docker-comopse ps", um zu überprüfen, ob alle Container aktiv sind. (MySQL wurde hier beendet, als ich keinen Tausch machte)

Lassen Sie uns nach dem sicheren Start mit der IP-Adresse zugreifen

Führen Sie die folgenden Schritte auf der Lightsail-Seite aus.

Versuchen Sie, mit einem Browser auf xx.xx.xx.xx: 8080 zuzugreifen. Wenn der Startbildschirm von Laravel angezeigt wird, ist dies erfolgreich.

Wenn Sie auf xx.xx.xx.xx: 8080 / admin zugreifen, gelangen Sie zum Exment-Initialisierungsbildschirm.

Der Bildschirm besteht aus drei Teilen

  1. Geben Sie Sprache und Zeitzone an
  2. DB-Einstellungen
  3. Starttaste für die DB-Einstellung

Es gibt 3 Bildschirme. Was Sie eingeben, ist die DB-Einstellung auf dem zweiten Bildschirm.

Da ich Docker verwende, füllen Sie die Einstellungen aus, indem Sie auf den Artikel "Ich habe versucht, eine Docker-Umgebung für Exment zu erstellen" verweisen.

--Hostname → db --Datenbankname → Erweiterungsdatenbank --Benutzername → Nebenstellennutzer

Wenn die Installation erfolgreich abgeschlossen wurde, wird danach der Startbildschirm der Erweiterung angezeigt.

Ich möchte die angehängten Dateien in S3 speichern!

Die Lightsail-Instanz hat diesmal einen Speicherbereich von 20 GB, daher ist es schön, etwas zu verschieben, aber es ist eine Kapazität, die bald zum Knall wird, wenn Sie Binärdaten einfügen.

Exment bietet die Möglichkeit, verschiedene Dateien auf einem externen Speicherdienst zu speichern.

Es ist eine große Sache, also bereiten wir es auf AWS vor und speichern es in S3.

S3 war auch eine Jungfrau, also habe ich einen Eimer gemacht, indem ich mich auf den folgenden Artikel bezog.

Einstellungen sind auch auf der Exment-Seite erforderlich. Gehen Sie in den Container, der bereits mit "Docker-Compose Exec PHP Bash" ausgestattet ist.

[root@ip-172-xx-xx-x /home/centos/]# docker-compose exec php bash

Jetzt können Sie es in den PHP-Container legen, in dem Extension ausgeführt wird. Wenn sich die Eingabeaufforderung in etwa so ändert, sind Sie erfolgreich.

root@f54bef27801a:/var/www#

Mit anderen Worten, es hat die doppelte Struktur, im Docker-Container PHP in Lightsail in der Cloud zu sein.

Ändern Sie die Erweiterungsdatei (Laravel) weiter, während Sie "Speicherziel der (erweiterten) Datei ändern" lesen.

Ändern / fügen Sie die ENV-Datei im Exment-Stammordner mit vim hinzu.

.env


EXMENT_DRIVER_EXMENT=s3
EXMENT_DRIVER_BACKUP=s3
EXMENT_DRIVER_TEMPLATE=s3
EXMENT_DRIVER_PLUGIN=s3

AWS_ACCESS_KEY_ID=(AWS S3-Zugriffsschlüssel)
AWS_SECRET_ACCESS_KEY=(Geheimer AWS S3-Zugriffsschlüssel)
AWS_DEFAULT_REGION=(AWS S3-Region)

AWS_BUCKET_EXMENT=(AWS S3-Bucket zur Verwendung in Anhängen)
AWS_BUCKET_BACKUP=(AWS S3-Bucket, der für die Sicherung verwendet wird)
AWS_BUCKET_TEMPLATE=(In der Vorlage verwendeter AWS S3-Bucket)
AWS_BUCKET_PLUGIN=(AWS S3-Bucket zur Verwendung mit dem Plug-In)

Es ist nicht erforderlich, alle "EXMENT_DRIVER_xxx" festzulegen, sondern nur diejenigen, die festgelegt werden müssen. Sie benötigen nur das erforderliche "AWS_BUCKET_xxx".

Ich wollte die Anhänge und Sicherungsdaten in S3 speichern,

Ich habe nur 4 von gesetzt.

Installieren Sie abschließend die Bibliothek mit Composer.

Früher habe ich php.ini bearbeitet, bevor docker-compose up -d, aber Composer verbraucht Speicher und erreicht bald das Speicher-Nutzungslimit von PHP, also habe ich es so eingestellt, dass dieses Limit angehoben wird. tat.

Die Installation von Composer dauert lange, daher ist es schmerzhaft, dass sie aufgrund der Zeit fehlgeschlagen ist ... (Ich war sehr traurig). Überprüfen Sie diese Einstellung daher erneut, bevor Sie "Composer Require" ausführen Machen wir das.

root@f54bef27801a:/var/www# php -i | grep memory_limit
memory_limit => -1 => -1

Wenn es -1 ist, ist es OK. (Das heißt, es gibt kein Speicherlimit)

Jetzt ist es Zeit, die Bibliothek zu installieren

root@f54bef27801a:/var/www# composer require league/flysystem-aws-s3-v3 ~1.0 -vvv

Die Option -vvv ist eine Anweisung, mit der Sie sich bis ins kleinste Detail anmelden können. Die Installation von Composer dauert lange, daher mache ich mir Sorgen, wenn das Terminal längere Zeit still ist.

Also werde ich sicherstellen, dass die Protokolle einzeln ausgegeben werden. Wenn Sie lange mit dieser Option geschwiegen haben, wird sie entweder aus irgendeinem Grund gestoppt oder Sie erledigen eine Menge schwerer Arbeit ...

Damit sind die Optionseinstellungen zum Hochladen angehängter Dateien in S3 abgeschlossen. Stellen Sie sicher, dass Sie die Datei in Ihrem Bucket haben, indem Sie ein geeignetes Bild hochladen.

Endlich der Fluch https ...

Nein, an https ist nichts auszusetzen, aber ich war so süchtig danach ...

Ich habe mich gefragt, ob etwas mit der Methode nicht stimmt, und ich habe sie aus der Docker-Umgebung heraus neu installiert, die viele Male vollständig aufgegeben wurde. Daher hat es viel Zeit in Anspruch genommen.

Wie ich bereits sagte, schlägt die Erstinstallation fehl, wenn Sie Docker-Compose gemischt mit https-Portal schreiben. Am Ende stieß ich auf einen unklaren Fehler und blieb stecken.

Ich sagte, dass es 3 Bildschirme für die Installation gibt, aber wenn ich die Installationsschaltfläche auf dem letzten 3. Bildschirm drücke, erscheint der graue Fehlerbildschirm von Laravel.

Use of undefined constant STDIN - assumed 'STDIN' (this will throw an Error in a future version of PHP)

Ich kam heraus und konnte keine Daten in die Datenbank einfügen. Ich habe hier aufgegeben, weil ich mit PHP und Laravel nicht vertraut bin.

Da http einwandfrei funktionierte, gab ich es schließlich auf, diesen Fehler zu beseitigen, und wechselte zu der Strategie, die Installation mit http abzuschließen und dann zu https zu wechseln.

Fügen Sie https-portal zu docker-compose.yml hinzu

Exportieren Sie nur den https-Portal-Teil.

docker-compose.yml


https-portal:
  image: steveltn/https-portal:1
  ports:
    - '80:80'
    - '443:443'
  links:
    - nginx
  restart: always
  volumes:
    - ./certs:/var/lib/https-portal
  environment:
    STAGE: 'production'
    DOMAINS: >-
      example.com -> http://nginx:8080
  depends_on:
    - php

Es gibt nichts besonders Schwieriges. Es unterscheidet sich nicht wesentlich von der offiziellen Stichprobe. Der Punkt ist, dass, wenn "STAGE:" von "Enviroment:" nicht "Produktion" oder "Inszenierung" ist, Sie nicht in der Lage sind, das Zertifikat dieses Chan von Let's Encrypt zu erhalten. Wenn dies nicht als lokal angegeben ist, wird ein Zertifikat ausgestellt, da es sich um eine lokale Entwicklung handelt. Dies war auch ein einfacher Suchtpunkt (Suchtpunkt 5)

Wenn Sie https://example.com/ besuchen und der Startbildschirm von Laravel angezeigt wird, ist dies in Ordnung und erfolgreich ...

Ich würde gerne sagen, aber es gibt immer noch.

Wenn Sie auf https://example.com/admin zugreifen, wird der Bildschirm dramatisch verkleinert!

In der Browserkonsole werden alle CSS / JSs blockiert, die von http in gemischten Inhalten stammen.

Anfangs wusste ich nicht, wie ich damit umgehen sollte, aber nach Versuch und Irrtum waren Laravel und Laravel-admin entschlossen, der Schuldige zu sein! Es scheint, dass der Pfad mit http in der Beschreibung wie Asset ('/ css / hoge.css') ausgegeben wird ...

Das Folgende sind Maßnahmen für diese Angelegenheit. Machen Sie auch "Docker-Compose Exec PHP Bash", um hineinzukommen.

/var/www/exment/.env


APP_ENV=production

/var/www/exment/app/Providers/AppProvider.php


class AppServiceProvider extends ServiceProvider
    public function boot()
    {
    if (config('app.env') === 'production') {
       \URL::forceScheme('https'); //Schema, nicht Schema!!!(Suchtpunkt 6)
    }
    }

/var/www/exment/config/admin.php


    /*
    |--------------------------------------------------------------------------
    | Access via `https`
    |--------------------------------------------------------------------------
    |
    | If your page is going to be accessed via https, set it to `true`.
    |
    */
    'https' => env('ADMIN_HTTPS', true), //← Der Standardwert ist false, setzen Sie ihn also auf true!

Jetzt werden alle Assets von https geliefert und angezeigt, ohne den Bildschirm zu beschädigen.

Um ehrlich zu sein, weiß ich nicht, ob dies wirklich die richtige Antwort ist. Vielleicht ist AppProvider.php nicht notwendig ... Es schien, dass die Art und Weise, den Code zu schreiben, je nach Version von Laravel etwas anders war. Die Realität ist, dass ich so viele Referenzquellen durchgelesen und es geschafft habe, mich in einen Arbeitscode zu verwandeln.

Wenn Sie einen besseren Weg haben, lassen Sie es uns bitte in den Kommentaren wissen.

Jetzt funktioniert es sicher!

Bisher funktioniert es gut gelaunt.

Sicherheit etc.

In diesem Artikel wird nicht auf Sicherheit usw. eingegangen, um eine Umgebung für Überprüfungszwecke zu erstellen. Wenn Sie damit vertraut sind, würde ich es begrüßen, wenn Sie es ergänzen könnten.

von jetzt an

Ich möchte einen Artikel schreiben, der den wunderbaren Teil von Exment ergänzt!

Recommended Posts

Kintone-Klon? Ich war ziemlich süchtig danach, die OSS WebDB-Erweiterung mit Lightsail + Docker zu starten. Notieren Sie sich dies.
Ich war ein wenig süchtig nach dem S3-Prüfsummenvergleich, machen Sie sich also eine Notiz.
Eine Geschichte, die mich während des Komponententests von der impliziten Typkonvertierung von ActiveRecord abhängig machte
Der Artikel für Neuankömmlinge hat mich inspiriert. Notieren Sie ihn sich, damit Sie Ihre ursprünglichen Absichten nicht vergessen.
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 2 ~ Grundlegende Schreibweise für Dash ~ erstellt
Ich möchte mit link_to [Hinweis] eine Schaltfläche mit einem Zeilenumbruch erstellen.
Ein Hinweis, als ich süchtig danach war, Ubuntu auf WSL1 in WSL2 zu konvertieren
Eine Geschichte, der ich mit der automatischen Starteinstellung von Tomcat 8 unter CentOS 8 zweimal verfallen war
[Java-Anfänger] Ich habe ein etwas tieferes Verständnis von "Es ist Zeit, neue zu verwenden", also machen Sie sich eine Notiz
Probleme, denen ich beim Erstellen der Digdag-Umgebung mit Docker verfallen war
[Aktualisierung] Es war schwierig, ein Upgrade von der httpclient 3.x-Serie auf 4.5 durchzuführen, daher werde ich eine Zusammenfassung der Änderungen schreiben
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 3 ~ Übung ~ erstellt
Rails6 Ich möchte ein Array von Werten mit einem Kontrollkästchen erstellen
SpringSecurity Ich war süchtig danach, mich mit einem Hash-Passwort anzumelden (gelöst)
Ich habe versucht, eine Webanwendung voller Fehler mit Spring Boot zu klonen
Ich war süchtig danach, onActivityResult () mit DialogFragment zu machen
Da ich es oft benutze, notiere ich mir DB-bezogene Dinge auf Android.
Wovon ich süchtig war, als ich eine Spring Boot-Anwendung mit VS Code entwickelte
Bei der Erstellung einer persönlichen App habe ich mich gefragt, ob ich sie mit haml erstellen soll
Ich habe versucht, eine Nachrichtenfunktion der Rails Tutorial-Erweiterung (Teil 1) zu erstellen: Erstellen Sie ein Modell
Beachten Sie, dass ich von den Einstellungen des Android-Projekts von IntelliJ IDEA abhängig war
Ich habe den lesbaren Code gelesen, machen Sie sich also eine Notiz
Ich war süchtig nach der Aufzeichnung des zugehörigen Modells
Ich habe versucht, eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 3) zu erstellen: Ein Missverständnis der Spezifikationen wurde behoben
Ein problematischer Hinweis beim Versuch, nginx mit Remote-Containern von vscode zu verwenden
Ich habe versucht, eine Nachrichtenfunktion für die Erweiterung Rails Tutorial (Teil 2) zu erstellen: Erstellen Sie einen Bildschirm zum Anzeigen
Als ich versuchte, Azure Kinect DK mit Docker auszuführen, wurde es von EULA blockiert
[Terraform] Docker behebt das Zeitlimit beim Versuch, Azure-Ressourcen auf einem Windows-Computer zu erstellen