Obraz Dockera nie chce działać

3

Ogarniam sobie Docker Desktop, po spullowaniu obrazu: https://hub.docker.com/r/4programmers/coyote uruchamiam go komendą:

docker run -p 5000:80 --name 4programmers 4programmers/coyote

i otrzymuję w logach:

[12-Jun-2022 23:26:54] NOTICE: fpm is running, pid 1
[12-Jun-2022 23:26:54] NOTICE: ready to handle connections

Niestety, po kliknięciu OPEN WITH BROWSER lub po wysłaniu żądania w przeglądarce z Chromium http://localhost:5000/ otrzymuję:

This page isn’t workinglocalhost didn’t send any data.
ERR_EMPTY_RESPONSE

A w przeglądarce FF:

Przerwane połączenie
Połączenie z serwerem zostało zresetowane podczas wczytywania strony.

Po wysłaniu https://localhost:5000/ otrzymuję odpowiednio:

This site can’t be reachedlocalhost unexpectedly closed the connection.

oraz

Nie udało się nawiązać bezpiecznego połączenia
Podczas łączenia z serwerem „localhost:5000” wystąpił błąd. PR_END_OF_FILE_ERROR

Wnioskuję, że to może być problem z certyfikatami dla localhost? Testowane też przy wylączonym Windows Defenderze. Czy potrzeba może uruchomić coś jeszcze? Jakieś sugenstie?

0
Saalin napisał(a):

Czytałeś README?
https://github.com/adam-boduch/coyote

Wnioskuję, że obraz Dockera nie jest gotową do uruchomienia lokalnie aplikacją. Czy się mylę?

Jak chodzi o wymagania, to mam Dockera 20.x i Docker Compose 2.x, pracuję na Windows, mam zainstalowane Ubuntu na WSL2.

Próbuję zrozumieć instrukcję:

  1. cp .env.default .env
  2. make up
  3. make install-dev

Z Linuxem jestem trochę na bakier, ale wnioskuję, że na Windows nie uruchomię lokalnie aplikacji 4p i powinienem przenieść się na Linux?

  1. Ściągnąłem coyote-master z GH
  2. W folderze głównym wykonałem w konsoli cp .env.default .env
  3. make up i make install-dev to są komendy Linuxowe

Czy da się uruchomić aplikację na Windows z Dockerem?

1

Na aplikacje 4p składa się więcej kontenerów, baza, elasticsearch, logi, kolejki i inne.

Usuń wszystkie kontenery które zrobiłeś, i jak masz już .env oraz ściągnięte repo Coyote'a, to wystarczy że zrobisz:

docker-compose up

Nie wiem po co kombinujesz.

3

Po uruchomieniu wszystkich kontenerów Dockera, projekt powinien działać pod adresem localhost:8880 ponieważ na tym porcie uruchomiony jest serwer HTTP.

Tak jak napisał @Riddle - na projekt składa się wiele kontenerów. Można uruchomić wszystkie jednocześnie dzięki docker-compose (patrz: plik README.md)

0
Riddle napisał(a):

Usuń wszystkie kontenery które zrobiłeś, i jak masz już .env oraz ściągnięte repo Coyote'a, to wystarczy że zrobisz:

docker-compose up

To jest czego akurat szukałem. Jeśli to było coś oczywistego to sorry, moje pierwsze spotkanie z Docker Compose ;p

Choć niestety, odpala mi się 13/15 kontenerów. Exited pozostają dwa:

  • coyote-master_cron_1, z błędem w logach: cron: can't open or create /var/run/crond.pid: Permission denied
  • coyote-master_createbuckets_1, z błędem w logach: mc: <ERROR> Unable to make bucket 'minio/public'. Your previous request to create the named bucket succeeded and you already own it.

Wchodząc na localhost:8880 otrzymuję błąd:

Warning: require(/var/www/public/../vendor/autoload.php): Failed to open stream: No such file or directory in /var/www/public/index.php on line 28
Fatal error: Uncaught Error: Failed opening required '/var/www/public/../vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/public/index.php:28 Stack trace: #0 {main} thrown in /var/www/public/index.php on line 28

Właśnie próbuję dotrzeć do tego czy czegoś brakuje na mojej maszynie, czy może w samym projekcie...

1
bakunet napisał(a):
Riddle napisał(a):

Usuń wszystkie kontenery które zrobiłeś, i jak masz już .env oraz ściągnięte repo Coyote'a, to wystarczy że zrobisz:

docker-compose up

To jest czego akurat szukałem. Jeśli to było coś oczywistego to sorry, moje pierwsze spotkanie z Docker Compose ;p

Tak, to jest coś bardzo oczywistego. 99% użycia wszystkich projektów na dockerze. Coś pokroju npm install albo git pull.

Choć niestety, odpala mi się 13/15 kontenerów. Exited pozostają dwa:

  • coyote-master_cron_1, z błędem w logach: cron: can't open or create /var/run/crond.pid: Permission denied
  • coyote-master_createbuckets_1, z błędem w logach: mc: <ERROR> Unable to make bucket 'minio/public'. Your previous request to create the named bucket succeeded and you already own it.

Zrobiłeś tak jak Ci powiedziałem? Usunąłeś wszystkie kontenery które stworzyłeś, zanim odpaliłeś docker-compose?

Wchodząc na localhost:8880 otrzymuję błąd:

Warning: require(/var/www/public/../vendor/autoload.php): Failed to open stream: No such file or directory in /var/www/public/index.php on line 28
Fatal error: Uncaught Error: Failed opening required '/var/www/public/../vendor/autoload.php' (include_path='.:/usr/local/lib/php') in /var/www/public/index.php:28 Stack trace: #0 {main} thrown in /var/www/public/index.php on line 28

To znaczy że nie odpalił się composer install w Twoim kontenerze.

bakunet napisał(a):

Właśnie próbuję dotrzeć do tego czy czegoś brakuje na mojej maszynie, czy może w samym projekcie...

W projekcie jest okej, ja i Adam jakoś normalnie używamy, a też mam Windowsa.

0
Riddle napisał(a):

Zrobiłeś tak jak Ci powiedziałem? Usunąłeś wszystkie kontenery które stworzyłeś, zanim odpaliłeś docker-compose?

Tak, wszystkie były usunięte. Ciekawe jest też, jak na swoim WSL Ubuntu wpiszę cron -l także dostaję błąd: cron: can't open or create /var/run/crond.pid: Permission denied

1

UPDATE

Doszedłem do tego, że coyote-master_cron_1 crashuje przez komendę cron -f -l 8:

e1b92ab753e4 4programmers/php-node:latest "cron -f -l 8" 2 minutes ago Exited (1) 2 minutes ago coyote-master_cron_1

Wpadłem na artykuł który może rozwiązać mój problem: https://blog.thesparktree.com/cron-in-docker

Choć będę mógł przetestować to dopiero późniejszym wieczorem. Ciekaw jestem czy ktoś wcześniej natrafił na podobny problem?

1

Kontenerem cron póki co się nie przejmuj. On odpala jedynie zadania crona, a na tę chwilę nie jest to istotne. Instalacja projektu na linuxie opiera się w zasadzie na tych 3 komendach:

  1. cp .env.default .env
  2. make up
  3. make install-dev

Na Windows nie ma jednak make więc tutaj sprawa jest nieco trudniejsza. Będziesz musiał wklepać każde polecenie pojedynczo. Tutaj jest lista:

https://github.com/adam-boduch/coyote/blob/master/Makefile#L3

1
Adam Boduch napisał(a):
  1. cp .env.default .env
  2. make up
  3. make install-dev

Udało mi się odpalić lokalnie 4p, jednak dostaję błąd:

4p-dev.png

0

W pliku .env zmień APP_DEBUG na true aby zobaczyć jaki jest komunikat błędu.

1

Na Ubuntu WSL jest dość długa lista wyjątków, nie wiem czy to jest powodowane faktem, że jest to nakładka pod Windows?

Po uruchomieniu:

cp .env.default .env
make up
make install-dev

4p-exceptions.png

Na Windows udało mi się w końcu uruchomić lokalnie przy użyciu sekwencji:

docker-compose up -d
docker-compose exec -T -u nginx php composer install
docker-compose exec -T -u nginx php chmod -R 777 storage/ <- chmod: changing permissions of 'storage/': Operation not permitted
docker-compose exec -T -u nginx php chmod 777 bootstrap/cache/ <- chmod: changing permissions of 'bootstrap/cache/': Operation not permitted
docker-compose exec -T -u nginx php php artisan migrate --force
docker-compose exec -T -u nginx php php artisan db:seed
docker-compose exec -T -u nginx php yarn install
docker-compose exec -T -u nginx php yarn run dev
docker-compose exec -T -u nginx php php artisan config:cache
docker-compose exec -T -u nginx php php artisan route:cache
docker-compose exec -T -u nginx php php artisan es:create --force
docker-compose exec -T -u nginx php php artisan es:index --force
docker-compose exec -T -u nginx php php artisan passport:install
docker-compose exec -T -u nginx php php artisan webpush:vapid

Dziwią mnie błędy, jako że uruchamiam Terminal jako administrator, dla:

docker-compose exec -T -u nginx php chmod -R 777 storage/ <- chmod: changing permissions of 'storage/': Operation not permitted
docker-compose exec -T -u nginx php chmod 777 bootstrap/cache/ <- chmod: changing permissions of 'bootstrap/cache/': Operation not permitted

W każdym razie aplikacja działa poprawnie, choć chyba nic nie zaciąga z bazy:
4p-dev.png

2

@bakunet:

Dziwią mnie błędy, jako że uruchamiam Terminal jako administrator, dla:
docker-compose exec -T -u nginx php chmod -R 777 storage/ <- chmod: changing permissions of 'storage/': Operation not permitted
docker-compose exec -T -u nginx php chmod 777 bootstrap/cache/ <- chmod: changing permissions of 'bootstrap/cache/': Operation not permitted

Wykonaj chmody bezpośrednio w kontenerze zamiast pod terminalem Windowsa. Czyli samo:

chmod -R 777 storage/
chmod 777 bootstrap/cache/

Na php oraz nginx.

2
mstl napisał(a):

Wykonaj chmody bezpośrednio w kontenerze zamiast pod terminalem Windowsa. Czyli samo:

chmod -R 777 storage/
chmod 777 bootstrap/cache/

Na php oraz nginx.

Pomogło, w końcu udało mi się postawić środowisko testowe. Nie wiem jeszcze czemu idąc tą samą ścieżką miałem błędy na drugim komputerze, ale to już jest marginalny problem.
4p-dev.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1