sourcecode

포드맨 컴포지를 사용할 때 DB 컨테이너에 액세스하려면 어떻게 해야 합니까?

copyscript 2023. 6. 18. 16:14
반응형

포드맨 컴포지를 사용할 때 DB 컨테이너에 액세스하려면 어떻게 해야 합니까?

podman-compose를 사용하면서 mariadb 컨테이너에 연결하는 방법을 알아보려고 했는데 계속 오류가 납니다.

제가 한 일은 다음과 같습니다.

소프트웨어 버전

podman version = 3.3.1
podman-compose version = podman-compose-0.1.7-2.git20201120.el8.noarch`

도커-docker.yml

version: '3'
services:
  db:
    image: mariadb:latest
    environment:
      MARIADB_USER: user
      MARIADB_PASSWORD: pass
      MARIADB_DATABASE: testdb
      MARIADB_ROOT_PASSWORD: rootpass
    volumes:
      - db_data:/var/lib/mysql

다음을 사용하여 이 컨테이너를 회전시킬 때:podman-compose up -d

그런 다음 다음을 사용하여 이 데이터베이스에 연결해 보십시오.

podman exec -it project_db_1 mariadb -uroot -prootpass

다음 오류가 발생했습니다.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

일반 사용자와 루트 사용자 모두에서 이 오류가 발생합니다.

하지만 포드맨과 같은 컨테이너를 실행할 때:

포드만 사령부

podman run -d \
--name mariadb \
-e MARIADB_USER=user \
-e MARIADB_PASSWORD=pass \
-e MARIADB_DATABASE=testdb \
-e MARIADB_ROOT_PASSWORD=rootpass \
mariadb:latest

그런 다음 다음을 사용하여 이 데이터베이스에 연결해 보십시오.

podman exec -it mariadb mariadb -uroot -prootpass

성공적으로 로그인할 수 있습니다.

제가 포드맨 컴포지에 대해 무엇을 잘못하고 있는지 또는 왜 제가 제공한 자격 증명으로 로그인할 수 없는지 설명해 주실 수 있는 사람이 있습니까?

좋아요, 이걸 고치기 위해 내가 뭘 했는지 알고 싶은 사람은...먼저 포드맨 & 포드맨 컴포지를 제거했는데, 문제가 너무 많아서 도커 & 도커 컴포지를 설치했습니다.

두 번째로, 이 스크립트를 도커 컴포지로 실행했을 때 포드맨 컴포지로 표시되지 않는 오류가 발생했습니다.

오류:services.db.environment must be a mapping

Google에서 오류를 검색한 후 환경 섹션의 형식을 다음과 같이 지정해야 한다는 것을 알게 되었습니다.

version: '3'
services:
  db:
    image: mariadb:latest
    environment:
      - MARIADB_USER=user
      - MARIADB_PASSWORD=pass
      - MARIADB_DATABASE=testdb
      - MARIADB_ROOT_PASSWORD=rootpass
    volumes:
      - db_data:/var/lib/mysql

이 문제를 해결한 후 도커 구성이 잘 실행되어 다른 컨테이너에서도 데이터베이스에 연결할 수 있었습니다.저는 이 코드 수정으로 포드맨 컴포지를 사용하여 테스트를 했지만 여전히 작동하지 않았습니다.포드맨이 문제를 해결할 때까지 도커를 사용하려고 합니다.

컨테이너의 "공용" 주소에 바인딩해야 합니다.기본적으로 0.0.0.0에 바인딩됩니다.해당 인터페이스에서는 다른 포드에서 액세스할 수 없습니다.
추가 acommand서비스에, 그리고 세트.--bind-address다음과 같이:

services:
  db:
    image: docker.io/mariadb:latest
    command: --bind-address=db

이렇게 하면 올바른 인터페이스를 들을 수 있습니다 :)

언급URL : https://stackoverflow.com/questions/70675139/how-do-i-access-a-db-container-when-using-podman-compose

반응형