Docker Compose Adminer 구성 완벽 가이드! Database 관리 화면 구축과 Container 연결 방법 알아보기

Database를 운영하다 보면 터미널 명령어만으로 데이터를 관리하기 불편한 경우가 많습니다.

특히 MySQL, PostgreSQL 같은 Database는 다음 작업이 자주 필요합니다.

  • Table 확인
  • 데이터 조회
  • SQL 실행
  • User 관리
  • Database 구조 확인

이때 사용하는 것이 Database 관리 도구입니다.

대표적인 도구:

  • Adminer
  • phpMyAdmin
  • DBeaver
  • pgAdmin

Adminer는 가볍고 설치가 쉬운 Web 기반 Database 관리 도구입니다.

구조:

사용자

↓

Web Browser

↓

Adminer Container

↓

Database Container

Docker Compose를 사용하면 Adminer도 하나의 Service로 쉽게 추가할 수 있습니다.

구성:

Docker Compose

↓

MySQL Container

↓

Adminer Container

↓

Web 관리 화면

이번 글에서는 Docker Compose Adminer 설치부터 MySQL/PostgreSQL 연결, Network 구성, 보안 설정, Production 운영 방법까지 알아보겠습니다.

Adminer란 무엇인가?

Adminer는 Database를 Web 화면에서 관리할 수 있는 오픈소스 도구입니다.

지원 Database:

  • MySQL
  • PostgreSQL
  • SQLite
  • MariaDB
  • Oracle
  • MongoDB 일부 환경

주요 기능:

  • Database 접속
  • SQL 실행
  • Table 관리
  • 데이터 수정
  • Import/Export

기존 방식:

Terminal

↓

mysql 명령어

↓

SQL 입력

Adminer 방식:

Browser

↓

Adminer Web UI

↓

Database 관리

Docker Compose Adminer 기본 구성

MySQL과 Adminer를 함께 구성하는 예제입니다.

docker-compose.yml:

services:

  mysql:

    image: mysql:8.0

    environment:

      MYSQL_ROOT_PASSWORD: password

      MYSQL_DATABASE: app


    volumes:

      - mysql-data:/var/lib/mysql


  adminer:

    image: adminer

    ports:

      - "8080:8080"


volumes:

  mysql-data:

구조:

MySQL Container

↓

mysql-data Volume


Adminer Container

↓

8080 Web Port

실행:

docker compose up -d

확인:

docker compose ps

결과:

mysql

running


adminer

running

Docker Compose Adminer 접속 방법

Browser 접속:

http://서버주소:8080

Adminer 로그인 화면:

입력:

System:

MySQL


Server:

mysql


Username:

root


Password:

password


Database:

app

중요:

Server 항목은:

잘못된 설정:

localhost

올바른 설정:

mysql

이유:

Adminer와 MySQL은 서로 다른 Container이기 때문입니다.

Docker Compose Adminer Network 연결

Adminer가 Database에 접근하려면 같은 Network에 있어야 합니다.

예:

services:

  mysql:

    image: mysql:8

    networks:

      - database-network


  adminer:

    image: adminer

    networks:

      - database-network


    ports:

      - "8080:8080"


networks:

  database-network:

구조:

Adminer Container

↓

database-network

↓

MySQL Container

Docker Compose PostgreSQL Adminer 연결

Adminer는 PostgreSQL도 관리할 수 있습니다.

PostgreSQL 구성:

services:

  postgres:

    image: postgres:16

    environment:

      POSTGRES_PASSWORD: password


  adminer:

    image: adminer

    ports:

      - "8080:8080"

접속 정보:

System:

PostgreSQL


Server:

postgres


Username:

postgres


Password:

password

Docker Compose Adminer Port 변경

기본:

ports:

  - "8080:8080"

다른 Port 사용:

ports:

  - "9090:8080"

접속:

http://서버주소:9090

구조:

Host 9090

↓

Adminer Container 8080

Docker Compose Adminer 보안 설정

Adminer는 Database 관리 화면이기 때문에 외부 공개 시 주의가 필요합니다.

위험한 구조:

Internet

↓

Adminer

↓

Database

문제:

  • 관리자 화면 노출
  • 비밀번호 공격 위험
  • Database 접근 위험

Production 권장:

사용자

↓

VPN 또는 내부망

↓

Adminer

↓

Database

Docker Compose Adminer Reverse Proxy 구성

실제 운영에서는 Nginx 뒤에 배치하는 경우가 많습니다.

구조:

Internet

↓

Nginx

↓

Adminer

↓

Database

장점:

  • HTTPS 적용
  • 접근 제한
  • 인증 추가 가능

예:

admin.example.com

↓

Nginx

↓

Adminer Container

Docker Compose Adminer 사용 시 Database Port 설정

Adminer 연결에서는 Database Port를 외부 공개할 필요가 없습니다.

좋은 구조:

Adminer

↓

Docker Network

↓

MySQL

불필요:

Internet

↓

3306 Port

↓

MySQL

Database는 내부 Network로만 연결하는 것이 안전합니다.

Docker Compose Adminer 업데이트 방법

Image 확인:

docker compose pull adminer

재실행:

docker compose up -d

업데이트 과정:

Backup

↓

Adminer Image 업데이트

↓

Container 재생성

↓

접속 확인

Docker Compose Adminer 장애 대응

Adminer 접속 불가

확인:

docker compose ps

확인:

  • Container 실행 상태
  • Port 연결
  • Network

Database 연결 실패

확인:

Server 이름

Username

Password

Database Port

Port 충돌

확인:

lsof -i :8080

변경:

ports:

  - "9090:8080"

Docker Compose Adminer 운영 Best Practice

추천:

  • Production 외부 공개 최소화
  • HTTPS 사용
  • 접근 IP 제한
  • Database Port 비공개
  • 관리자 계정 보안 강화

운영 구조:

Nginx

↓

Adminer

↓

Private Network

↓

Database

자주 묻는 질문

Adminer와 phpMyAdmin 차이는 무엇인가요?

Adminer는 가볍고 단일 파일 기반이라 설치가 간단합니다.

phpMyAdmin은 MySQL 관리 기능이 더 다양합니다.

Adminer는 Production 서버에서 사용해도 되나요?

가능하지만 외부 공개보다는 내부 관리용으로 사용하는 것을 권장합니다.

Adminer Container가 삭제되면 Database도 삭제되나요?

아닙니다.

Database 데이터는 별도 Volume에 저장됩니다.

MySQL과 PostgreSQL 모두 관리 가능한가요?

가능합니다.

Adminer 로그인 시 Database 종류를 선택할 수 있습니다.

마무리

Docker Compose Adminer 구성은 Database를 편리하게 관리하기 위한 효율적인 방법입니다.

핵심 구조:

Adminer Container

↓

Docker Network

↓

Database Container

↓

Volume Storage

이 구조를 사용하면 MySQL, PostgreSQL 같은 Database를 Web 화면에서 쉽게 관리할 수 있습니다.

다만 Production 환경에서는 Adminer를 외부에 직접 노출하지 않고 Nginx, HTTPS, 접근 제한과 함께 운영하는 것이 안전합니다.

다음 글에서는 Docker Compose 환경에서 여러 Database와 서비스를 안정적으로 운영하기 위한 Database 운영 전략을 알아보겠습니다.

댓글 남기기