Ich habe Laradock auf einer EC2-Instanz von AWS verwendet, um eine lokale Entwicklungsumgebung für Laravel zu erstellen. Starten Sie nach dem Erstellen der Laradock-Umgebung den Container mit "docker-compose up -d nginx mysql". Als ich versuchte, mit "docker-compose exec workspace bash" eine Verbindung zu "laradock_workspace_1" herzustellen und Laravel zu generieren, trat der folgende Fehler auf.
Der EC2-Instanztyp ist "t2.micro" (RAM 1 GB) und der AMI ist Amazon Linux 2.
$ root@4e964ed4f2ce: composer create-project --prefer-dist laravel/laravel ./
Installing laravel/laravel (v7.0.0)
- Installing laravel/laravel (v7.0.0): Downloading (100%)
proc_open(): fork failed - Cannot allocate memory
The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems)
Unzip with unzip command failed, falling back to ZipArchive class
The following exception is caused by a lack of memory or swap, or not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details
PHP Warning: proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Application.php on line 952
Warning: proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Application.php on line 952
[ErrorException]
proc_open(): fork failed - Cannot allocate memory
create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--ignore-platform-reqs] [--] [<package>] [<directory>] [<version>]
Ich habe es schon einmal gesehen, also habe ich versucht, eine Auslagerungsdatei zu erstellen, aber es hat nicht funktioniert.
Der laufende Container sieht so aus.
[ec2-user@ip-172-31-47-6 laradock]$ sudo docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp, 2376/tcp
laradock_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
laradock_nginx_1 /bin/bash /opt/startup.sh Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp, 0.0.0.0:8001->8000/tcp,
0.0.0.0:8080->8080/tcp
Versuchen Sie, eine Auslagerungsdatei normal zu erstellen.
Speichernutzung (MB-Anzeige) Derzeit ist kein Swap Space zugewiesen.
$ root@4e964ed4f2ce:/var/www# free -m
total used free shared buff/cache available
Mem: 983 566 217 3 200 232
Swap: 0 0 0
Erstellen Sie eine Datei für den Swap Space
$ root@4e964ed4f2ce:/var/www# /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 14.8802 s, 72.2 MB/s
Legen Sie die erstellte Datei mit dem Namen swap.1 im Auslagerungsbereich fest
$ root@4e964ed4f2ce:/var/www# /sbin/mkswap /var/swap.1
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=450a4e24-3455-4466-a6e0-5daf190cdad3
Swap Space aktivieren
root@4e964ed4f2ce:/var/www# /sbin/swapon /var/swap.1
swapon: /var/swap.1: insecure permissions 0644, 0600 suggested.
swapon: /var/swap.1: swapon failed: Operation not permitted
Dann erscheint der Fehler "Swapon fehlgeschlagen: Operation nicht erlaubt" und die Aktivierung des Swap-Bereichs schlägt fehl. Da es sich um ein Berechtigungsproblem handelt, habe ich es mit sudo versucht, aber das Ergebnis hat sich nicht geändert. Es scheint, dass es durch Manipulationen an den im Docker aufgeführten Betriebssystemberechtigungseinstellungen gelöst werden kann, aber ich möchte mich nicht mit Dingen herumschlagen, die ich nicht so gut verstehe ...
Die Ursache für den Austausch ist in erster Linie ein Mangel an physischem Gedächtnis. Anstatt eine Auslagerungsdatei zu erstellen und virtuellen Speicher hinzuzufügen, haben wir EC2 skaliert. Instanztyp: t2.micro-> t2.small Ich denke, es gibt kein Problem, da sich der Stundensatz nur um 1 Yen ändert.
Instanztyp | RAM(GB) | Online Linux Preise |
---|---|---|
t2.micro | 1 | 0.0116 USD pro Stunde |
t2.small | 2 | 0.023 USD pro Stunde |
Gegenmaßnahmen, wenn kein Speicher zugeordnet werden kann, werden in Laravel angezeigt [Entspricht dem Fehler Docker Operation nicht zulässig](https://bmf-tech.com/posts/Docker%E3%81%AEOperation%20not%20permitted%E3%81%A8%E3%81%84%E3 % 81% 86% E3% 82% A8% E3% 83% A9% E3% 83% BC% 08% E3% 81% AB% E5% AF% BE% E5% BF% 9C% E3% 81% 99% E3 % 82% 8B)