Laravel docker SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

0

Mam taki problem od x dni próbuje skonfigurować projekt laravela na moim kompie i nawet musiałem postawić mysql dla dockera na innym porcie i apache też na innym porcie i dostaje taki komunikat

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

Ja uruchamiam domena:8082

Tu chyba coś jest związane z tym, że musiałem postawić apache na innym porcie.

0

Pokaż .env oraz docker-compose.yml.

0
APP_KEY=
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=saskakepa.test
APP_PROTOCOL=http

VRKANSAGARA_COMPRESS_ENVIRONMENT='${APP_ENV}'

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=sas
DB_USERNAME=tomi
DB_PASSWORD=haslo

SK_DB_DATABASE=
SK_DB_HOST=
SK_DB_USERNAME=
SK_DB_PASSWORD=
SK_DB_PORT=3306

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=

AWS_KEY=
AWS_SECRET=
AWS_BUCKET=ecityapplication
AWS_REGION=eu-central-1

RECAPTCHA_PUBLIC_KEY=
RECAPTCHA_PRIVATE_KEY=

INSTAGRAM_USER=
INSTAGRAM_PASSWORD=

AIRLY_TOKEN=

FACEBOOK_APP_ID=
FACEBOOK_SECRET=

GOOGLE_TAG_MANAGER=
GOOGLE_MAPS_JS_KEY=

LINKEDIN_KEY=
LINKEDIN_SECRET=
LINKEDIN_REDIRECT_URI=


TWITTER_URL=https://api.twitter.com/1.1/statuses/update.json
TWITTER_OAUTH_ACCCESS_TOKEN=
TWITTER_OAUTH_ACCCESS_TOKEN_SECRET=
TWITTER_CONSUMER_KEY=
TWITTER_CONSUMER_SECRET=

# incoming emails email address
EMAIL_TO_NOTIFICATIONS=

ROLLBAR_TOKEN=
ROLLBAR_LEVEL=debug
ROLLBAR_ENABLED=true

ZOMATO_KEY=

CONVERTAPI_TOKEN=
AWS_BUCKET_BACKUP=

BOTMAN_FB_TOKEN=
BOTMAN_FB_SECRET=
BOTMAN_FB_VERIFICATION_TOKEN=

docker

version: '2'
services:
  application_nginx:
    container_name: saska_application_nginx
    build: ./build/nginx/.
    ports:
     - "8082:80"
    networks:
     - appnet
    volumes:
     - ./:/var/www/html
    environment:
      VIRTUAL_HOST: saskakepa.test
  application:
    container_name: saska_application
    build: ./.
    networks:
     - appnet
    volumes:
     - ./:/var/www/html
     - ./build/php/zdev._ini:/usr/local/etc/php/conf.d/zdev.ini
    environment:
      APP_ENV: local
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: mysql
      MYSQL_DATABASE: sas
      MYSQL_USER: tomi
      MYSQL_PASSWORD: haslo
    volumes:
     - data:/var/lib/mysql
    networks:
     - appnet
    ports:
     - "3307:3306"
    expose:
     - "3306"
networks:
  appnet:
    driver: "bridge"
volumes:
  data:
    driver: "local"


0

Teraz juz zmieniłem DB host na 127.0.0.1 i dostaje

SQLSTATE[HY000] [2002] Connection refused

I w ifconfig dostaje nowe połączenie sieciowe


docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:e6ff:fee5:212f  prefixlen 64  scopeid 0x20<link>
        ether 02:42:e6:e5:21:2f  txqueuelen 0  (Ethernet)
        RX packets 21  bytes 1604 (1.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 530  bytes 95358 (93.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Więc potem zmieniłem DB::host na 172.17.0.1
No i po tej operacji dostaje

SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

0

Podczas restartowania kontenera zostaje mu przypisany nowy IP[1] - dlatego też nie powinieneś na nich polegać.

Wejdź do katalogu z docker-compose.yml, uruchom docker-compose exec php bash, spróbuj stamtąd zrobić ping mysql i pokaż rezultat.

[1] możesz sam to sprawdzić robiąc ifconfig, docker-compose down && docker-compose up i znów ifconfig - kontenery powinny dostać zupełnie nowe IPki.

0
docker-compose exec php bash

Jest komunikat ERROR: No such service: php

A teraz ja teraz nigdzie nie mam uruchmionego w konsoli dockera tylko w tle
To jest wynik polecenia ps aux | grep docker

root      1159  0.0  0.4 1154592 35680 ?       Ssl  maj17   2:36 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root     17989  0.0  0.0  11940  2216 ?        Sl   12:05   0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 3307 -container-ip 172.17.0.2 -container-port 3306
root     17996  0.0  0.0  10728  2752 ?        Sl   12:05   0:00 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/3375136f5b706158bc3e10437722faead9967f3101fd339f3a2465e71274ecbd -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc
tomi5    21599  0.0  0.0  12776   904 pts/50   S+   15:29   0:00 grep docker
root     22813  0.0  0.0  12196  3828 ?        Sl   12:20   0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8082 -container-ip 172.18.0.2 -container-port 80
root     22821  0.0  0.0  10728  4736 ?        Sl   12:20   0:00 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/c38bd998e56cbf6801192500124948874258e34eff8c5307a73a47f855b21bd1 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc
root     22850  0.0  0.0   9320  4460 ?        Sl   12:20   0:00 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/b09942676487540e64c16aa507c400d0d852911b6b4dfc8c5466bde45feabfa5 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc

0

docker-compose exec application bash miało być*

0

Nie ma jest komunikat

No such command: application

Commands:
  build              Build or rebuild services
  bundle             Generate a Docker bundle from the Compose file
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove containers, networks, images, and volumes
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show the Docker-Compose version information

0
bash: ping: command not found

0

No to apt update && apt install ping i spróbuj ponownie.

0

mysql pingowac się nie dało to zmieniłem w .env DB::host na ping 172.18.0.2

I to ping ping 172.18.0.2
się pinguje

Ale z aplikacji dosckera nie bo nie może znależć ping jest komunikat

Package ping is a virtual package provided by:
  iputils-ping 3:20161105-1
  inetutils-ping 2:1.9.4-2+b1
You should explicitly select one to install.

0

Ja jeszcze przed tem, żeby uruchomić tę aplikację uruchomiłem te komendę

docker run --detach --name=test-mysql -p 3307:3306  --env="MYSQL_ROOT_PASSWORD=mypassword" mysql

I po tej operacji nie muszę uruchamiac z konsoli dockera

0

Powoli, powoli:

mysql pingowac się nie dało

Na 99% odpalałeś ping na hoście, podczas gdy poprosiłem Cię (nie bez powodu) o pingowanie z wewnątrz kontenera.

docker-compose działa tak, że wszystkie kontenery w ramach pojedynczego docker-compose.yml widzą się nawzajem w sieci po swojej nazwie - stąd też z poziomu kontenera application powinieneś być w stanie odpalić ping mysql, a z poziomu application_nginx - ping application (i tak dalej, i tak dalej).

Nie działa to jednak na hoście - rozwiązywanie nazw funkcjonuje jedynie wewnątrz kontenerów.

w .env DB::host na ping 172.18.0.2

Jak wyżej - powinieneś tam zostawić mysql.

Ale z aplikacji dosckera nie bo nie może znależć ping jest komunikat (...)

Zainstaluj dowolny z tych dwóch pakietów - nie ma różnicy.

Ja jeszcze przed tem, żeby uruchomić tę aplikację uruchomiłem te komendę (...)

W jakim celu ją uruchomiłeś?

0
Patryk27 napisał(a):

Powoli, powoli:

mysql pingowac się nie dało

Na 99% odpalałeś ping na hoście, podczas gdy poprosiłem Cię (nie bez powodu) o pingowanie z wewnątrz kontenera.

No bo tam nie działał.

docker-compose działa tak, że wszystkie kontenery w ramach pojedynczego docker-compose.yml widzą się nawzajem w sieci po swojej nazwie - stąd też z poziomu kontenera application powinieneś być w stanie odpalić ping mysql, a z poziomu application_nginx - ping application (i tak dalej, i tak dalej).

Nie działa to jednak na hoście - rozwiązywanie nazw funkcjonuje jedynie wewnątrz kontenerów.

w .env DB::host na ping 172.18.0.2

Jak wyżej - powinieneś tam zostawić mysql.

Ale z aplikacji dosckera nie bo nie może znależć ping jest komunikat (...)

Zainstaluj dowolny z tych dwóch pakietów - nie ma różnicy.

Ja jeszcze przed tem, żeby uruchomić tę aplikację uruchomiłem te komendę (...)

W jakim celu ją uruchomiłeś?
Chciałem naprawić ten błąd.

Teraz wróciłem do konsolowego odpalania dockera i przechodząć do katalogu
/projekt aplikacji

Uruchamiając docker-compose exec application bash
Dostaje.
ERROR: No container found for application_1

0

Uruchomiłeś wcześniej docker-compose down, zatrzymując wszystkie kontenery, prawda?

0

nie.

0

Tak sobie myślę czy to może mieć związek z tym, że ja uruchamiam to przez nazwę hosta czy domena którą mam zapisane wpliku host.conf bo inaczej się nie da ?

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