programing

도커에 워드프레스(작성 없음)

elseif 2023. 2. 28. 23:17

도커에 워드프레스(작성 없음)

이것은 나의 docker-compose.yml 입니다.

version: '2'
services:
  wordpress:
    image: wordpress
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_PASSWORD: example
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example

서비스는 정상적으로 실행되지만 몇 초 후 워드프레스 컨테이너가 중지됩니다.

이것은 내 도커 로그 워드프레스 컨테이너입니다.

WordPress not found in /var/www/html - copying now...
Complete! WordPress has been successfully copied to /var/www/html

MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10


MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known
Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

Warning: mysqli::mysqli(): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

MySQL Connection Error: (2002) php_network_getaddresses: getaddrinfo failed: Name or service not known

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in - on line 10

왜 이런 일이 일어날까요?

솔루션:

mysql 컨테이너를 워드프레스 컨테이너에 링크하는 것을 잊지 마십시오.

links:
   - db:mysql

다음과 같이 합니다.

version: '2'
services:
  wordpress:
    image: wordpress
    ports:
      - "8080:80"
    links:
      - db:mysql
    environment:
      WORDPRESS_DB_PASSWORD: example
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example

WordPress 이미지 공식 Dockerhub 페이지에는 이 중요한 세부 정보가 없습니다.

anwser는 나에게 효과가 있습니다.그 anwser에 투표할 만한 평판이 없었기 때문에, 여기에 카피합니다.

depends_on:
  - db

그러면 데이터베이스 컨테이너가 완전히 로드된 후wordpress컨테이너.도커에게 링크하도록 지시해야 합니다.db로부터의 컨테이너wordpress컨테이너를 사용하여 이름으로 참조합니다.

뭐?docker-composeip docker가 제공하는 ip docker는 후드 아래에 있습니다.db컨테이너 및 추가/etc/hosts에의 엔트리wordpress이름으로 참조할 수 있도록 컨테이너를 지정합니다.

워드프레스 섹션에 추가해 보십시오.

links:
  - db

DB 호스트(및 기타 필요한 MySql 속성)를 작성 파일 워드프레스 서비스(패스워드가 아닌 게시물에 표시됨)에서 설정하고 있습니까?예:

environment:
  WORDPRESS_DB_PASSWORD: example
  WORDPRESS_DB_HOST: db
  WORDPRESS_DB_USER: {xxx}
  WORDPRESS_DB_NAME: {xxx}
  WORDPRESS_TABLE_PREFIX: {xxx}

특히 "host" 값은 다음과 같습니다.db. 링크를 할 필요는 없습니다.단, 추가하는 것이 좋습니다.

depends_on:
  - db

wordpress 서비스 블록으로 이동합니다. 그러면 wordpress 컨테이너보다 먼저 DB 컨테이너를 시작하는 종속 순서가 설정됩니다.(A)linksAtribute도 같은 동작을 합니다만, 심플한 상태를 유지하려고 합니다).

주의:

기본적으로 Compose(작성)는 앱에 대해 단일 네트워크를 설정합니다.서비스의 각 컨테이너는 기본 네트워크에 가입하여 해당 네트워크상의 다른 컨테이너에 의해 도달 가능하며 컨테이너 이름과 동일한 호스트 이름으로 이들 컨테이너에 의해 검출될 수 있습니다.

링크를 사용하면 다른 서비스에서 서비스에 도달할 수 있는 추가 에일리어스를 정의할 수 있습니다.이러한 서비스는 서비스가 통신할 수 있도록 하기 위해 필요하지 않습니다.기본적으로는 어떤 서비스도 해당 서비스의 이름으로 다른 서비스에 도달할 수 있습니다.

https://docs.docker.com/compose/networking/#/http://http:/https://docs.docker.com/compose/networking/

대부분의 경우 디폴트로는 정상적으로 동작하기 때문에, 실제로 무엇을 하고 있는지 이해하지 않는 한, 네트워크를 조작하지 않습니다.특별한 케이스가 있는 경우 나중에 언제든지 최적화할 수 있습니다.

'db:' 아래에 이러한 항목을 추가하면 문제가 해결되었습니다.

    command: --default-authentication-plugin=mysql_native_password
    restart: always

yml을 사용하지 않았지만 로그가 동일하여 동작하지 않았습니다.

docker run -dP --link elated_yonath -e WORDPRESS_DB_USER=libik -e WORDPRESS_DB_PASSWORD=prdik wordpress 

그런데 링크된 컨테이너에 :mysql을 추가해야 합니다.

docker run -dP --link elated_yonath:mysql -e WORDPRESS_DB_USER=libik -e WORDPRESS_DB_PASSWORD=prdik wordpress 

이제 시작이다.

앞서 말한 바와 같이,

depends_on:
  - db

하지만 이렇게 된 후에도 여전히 연결 장애에 대한 메시지가 나타납니다.그리고 이 분명한 문제만 - 두 번째 옵션:

networks:
    local:

이 해결 오류 PHP 경고: mysqli::_facebook(): php_network_getaddresses: getaddrinfo가 실패했습니다. 22행의 표준 입력 코드에서 이름 해결이 일시적으로 실패했습니다.

언급URL : https://stackoverflow.com/questions/38407117/wordpress-on-docker-compose-no-run