새 프로젝트를 설정할 때 종종 프로젝트를 실행하기 위한 많은 사전 요구 사항 목록이 있을 수 있습니다. 이로 인해 다양한 데이터베이스, 심지어 다른 버전의 데이터베이스를 사용해야 할 때가 있습니다. Docker는 개발 환경에서 로컬 데이터베이스를 실행하기에 훌륭한 도구입니다. 여기에서는 docker-compose.yml 파일을 사용하여 Docker에서 여러 개의 데이터베이스와 GUI 클라이언트를 설정하는 방법을 살펴보겠습니다. 이것은 여러 데이터베이스를 고려한 빠르고 기본적인 방법입니다.
PostgreSQL
포스트그레스 데이터베이스 및 pgAdmin 클라이언트를 Docker를 사용하여 설정하는 방법은 다음과 같습니다. 아래의 코드와 설명을 참고하세요.
version: "3.7"
services:
postgres-db:
image: postgres:12.2
container_name: PostgreSQL
restart: always
environment:
POSTGRES_DB: postgres
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
PGDATA: /var/lib/postgresql/data
volumes:
- pgsql-data:/var/lib/postgresql/data
ports:
- 5010:5432
pgadmin-client:
image: dpage/pgadmin4:4.18
container_name: PgAdmin
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: secret
PGADMIN_LISTEN_PORT: 80
ports:
- 5011:80
volumes:
- pgadmin-data:/var/lib/pgadmin
links:
- postgres-db:pgsql-server
volumes:
pgsql-data:
pgadmin-data:
이 코드는 PostgreSQL 데이터베이스와 pgAdmin 클라이언트를 Docker로 설정합니다. 이것을 실행하기 위해서는 다음 단계를 따라야 합니다:
- Docker가 설치되어 있어야 합니다.
- 위의 Docker Compose 파일을 작성하고 저장합니다. 파일 이름은 "docker-compose.yml"로 지정할 수 있습니다.
- 터미널에서 해당 디렉토리로 이동한 후 다음 명령을 실행하여 컨테이너를 시작합니다:
docker-compose up -d
이제 PostgreSQL 데이터베이스와 pgAdmin 클라이언트가 도커 컨테이너로 실행됩니다. 이제 이들에 액세스하려면 다음과 같이 할 수 있습니다:
- pgAdmin 클라이언트는 브라우저에서 http://localhost:5011/login 주소로 접근할 수 있으며, 로그인 정보는 admin@admin.com 및 secret입니다.
- 데이터베이스에 액세스하려면 다음 정보를 사용합니다:
- 호스트 이름 또는 서버: PostgreSQL (이것은 Docker 컨테이너의 이름입니다)
- 포트: 5432
- 데이터베이스 자격 증명: admin 및 secret
이렇게 하면 PostgreSQL 데이터베이스와 pgAdmin 클라이언트를 실행하고 편리하게 사용할 수 있게 됩니다.
MySQL
MySQL 데이터베이스 및 GUI 클라이언트를 Docker를 사용하여 설정하는 방법은 다음과 같습니다. 아래의 코드와 설명을 참고하세요.
version: "3.7"
services:
mysql-db:
image: mysql:8.0
container_name: MySQL
restart: always
cap_add:
- SYS_NICE
environment:
MYSQL_DATABASE: quotes
MYSQL_USER: citizix_user
MYSQL_PASSWORD: An0thrS3crt
MYSQL_ROOT_PASSWORD: mauFJcuf5dhRMQrjj
volumes:
- mysql-data:/var/lib/mysql
ports:
- 5012:3306
phpmyadmin-client:
image: phpmyadmin:5.2.0
container_name: PhpMyAdmin
restart: always
ports:
- 5013:80
environment:
PMA_ARBITRARY: 1
volumes:
mysql-data:
이 코드는 MySQL 데이터베이스와 phpMyAdmin 클라이언트를 Docker로 설정합니다. 이것을 실행하기 위해서는 다음 단계를 따라야 합니다:
- Docker가 설치되어 있어야 합니다.
- 위의 Docker Compose 파일을 작성하고 저장합니다. 파일 이름은 "docker-compose.yml"로 지정할 수 있습니다.
- 터미널에서 해당 디렉토리로 이동한 후 다음 명령을 실행하여 컨테이너를 시작합니다:
docker-compose up -d
이제 MySQL 데이터베이스와 phpMyAdmin 클라이언트가 도커 컨테이너로 실행됩니다. 이제 이들에 액세스하려면 다음과 같이 할 수 있습니다:
- phpMyAdmin 클라이언트는 브라우저에서 http://localhost:5013/ 주소로 접근할 수 있으며, 추가 구성이 필요하지 않습니다.
- 데이터베이스에 액세스하려면 다음 정보를 사용합니다:
- 서버 이름: MySQL (이것은 Docker 컨테이너의 이름입니다)
- 포트: 3306
- 데이터베이스 자격 증명: citizix_user 및 An0thrS3crt
그리고 MySQL Workbench 클라이언트를 추가로 설정하기 위한 코드도 제공됩니다:
version: "3.7"
services:
mysql-workbench-client:
image: lscr.io/linuxserver/mysql-workbench:8.0.29
container_name: MySQL-Workbench
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/London
volumes:
- mysql-workbench-data:/config
ports:
- 5014:3000
cap_add:
- IPC_LOCK
restart: unless-stopped
volumes:
mysql-workbench-data:
이 부분의 코드를 통해 MySQL Workbench 클라이언트를 Docker로 설정할 수 있습니다. 추가로, MySQL 데이터베이스에 액세스하기 위해서는 다음 정보를 사용합니다:
- 서버 이름: MySQL (Docker 컨테이너의 이름)
- 데이터베이스 자격 증명은 위에서 설정한대로 citizix_user 및 An0thrS3crt를 사용합니다.
이렇게 하면 MySQL 데이터베이스와 여러 가지 클라이언트를 실행하고 편리하게 사용할 수 있게 됩니다.
MongoDB
MongoDB 데이터베이스 및 Nosqlclient GUI 클라이언트를 Docker를 사용하여 설정하는 방법은 다음과 같습니다. 아래의 코드와 설명을 참고하세요.
version: '3.7'
services:
mongodb-db:
image: mongo:4.4.2
container_name: MongoDB
restart: always
environment:
MONGO_INITDB_DATABASE: chats
ports:
- 5015:27017
volumes:
- mongodb-data:/data/db
nosqlclient-client:
image: mongoclient/mongoclient:4.0.1
container_name: Nosqlclient
restart: always
depends_on:
- mongodb-db
ports:
- 5016:3000
volumes:
mongodb-data:
이 코드는 MongoDB 데이터베이스와 Nosqlclient GUI 클라이언트를 Docker로 설정합니다. 이것을 실행하기 위해서는 다음 단계를 따라야 합니다:
- Docker가 설치되어 있어야 합니다.
- 위의 Docker Compose 파일을 작성하고 저장합니다. 파일 이름은 "docker-compose.yml"로 지정할 수 있습니다.
- 터미널에서 해당 디렉토리로 이동한 후 다음 명령을 실행하여 컨테이너를 시작합니다:
docker-compose up -d
이제 MongoDB 데이터베이스와 Nosqlclient GUI 클라이언트가 도커 컨테이너로 실행됩니다. 이제 이들에 액세스하려면 다음과 같이 할 수 있습니다:
- Nosqlclient 클라이언트는 브라우저에서 http://localhost:5016/ 주소로 접근할 수 있으며, 추가 구성이 필요하지 않습니다.
- 데이터베이스에 액세스하려면 다음 정보를 사용합니다:
- 호스트 이름: MongoDB (이것은 Docker 컨테이너의 이름입니다)
- 포트: 27017
- 연결 문자열을 사용할 수도 있으며, 예를 들면 "mongodb://userName:password@containerName:27017/dbname"와 같이 사용할 수 있습니다.
이렇게 하면 MongoDB 데이터베이스와 Nosqlclient 클라이언트를 실행하고 편리하게 사용할 수 있게 됩니다.
Oracle
Oracle 데이터베이스 및 CloudBeaver GUI 클라이언트를 Docker를 사용하여 설정하는 방법은 다음과 같습니다. 아래의 코드와 설명을 참고하세요.
version: '3.7'
services:
oracle-db:
image: wnameless/oracle-xe-11g-r2:18.04-apex
container_name: OracleDb
restart: always
environment:
- ORACLE_ALLOW_REMOTE=true
- ORACLE_DISABLE_ASYNCH_IO=true
- ORACLE_ENABLE_XDB=true
ports:
- 5019:1521
- 5020:8080
cloudbeaver-client:
image: dbeaver/cloudbeaver:22.1.1
container_name: CloudBeaver
restart: unless-stopped
volumes:
- cloudbeaver-data:/opt/cloudbeaver/workspace
ports:
- 5021:8978
volumes:
cloudbeaver-data:
이 코드는 Oracle 데이터베이스와 CloudBeaver GUI 클라이언트를 Docker로 설정합니다. 이것을 실행하기 위해서는 다음 단계를 따라야 합니다:
- Docker가 설치되어 있어야 합니다.
- 위의 Docker Compose 파일을 작성하고 저장합니다. 파일 이름은 "docker-compose.yml"로 지정할 수 있습니다.
- 터미널에서 해당 디렉토리로 이동한 후 다음 명령을 실행하여 컨테이너를 시작합니다:
docker-compose up -d
이제 Oracle 데이터베이스와 CloudBeaver GUI 클라이언트가 도커 컨테이너로 실행됩니다. 이제 이들에 액세스하려면 다음과 같이 할 수 있습니다:
- Oracle APEX 관리자 페이지는 http://localhost:5020/apex/apex_admin 주소로 접근할 수 있으며, 로그인 정보는 다음과 같습니다:
- 사용자 이름: ADMIN
- 비밀번호: Oracle_11g
- CloudBeaver 클라이언트는 브라우저에서 http://localhost:5021/ 주소로 접근할 수 있으며, 초기 자격 증명을 설정하라는 메시지가 표시됩니다. 여기서 사용자 이름은 "adminuser"이고 비밀번호는 "adminpass"로 설정했습니다.
- 데이터베이스에 액세스하려면 다음 정보를 사용합니다:
- 호스트 이름: OracleDb (이것은 Docker 컨테이너의 이름입니다)
- 포트: 1521
- 데이터베이스 또는 SID: xe
- 데이터베이스 자격 증명: system 및 oracle
이렇게 하면 Oracle 데이터베이스와 CloudBeaver 클라이언트를 실행하고 편리하게 사용할 수 있게 됩니다.
SQL Server
SQL Server 데이터베이스 및 CloudBeaver GUI 클라이언트를 Docker를 사용하여 설정하는 방법은 다음과 같습니다. 아래의 코드와 설명을 참고하세요.
version: '3.7'
services:
sqlserver-db:
image: mcr.microsoft.com/mssql/server:2019-latest
container_name: SQLServer
restart: always
environment:
- ACCEPT_EULA=Y
- MSSQL_PID=Express
- SA_PASSWORD=MyPass@word # 사용자 sa의 비밀번호
#volumes:
#- sqlserver-data:/var/opt/mssql/data # Windows에서 작동하지 않음
#- "./sqlserver-data/:/var/opt/mssql/data" # Windows에서 작동하는 방법
ports:
- 5017:1433
client:
image: dbeaver/cloudbeaver:22.1.1
container_name: CloudBeaver
restart: unless-stopped
volumes:
#sqlserver-data:
이 코드는 SQL Server 데이터베이스와 CloudBeaver GUI 클라이언트를 Docker로 설정합니다. 이것을 실행하기 위해서는 다음 단계를 따라야 합니다:
- Docker가 설치되어 있어야 합니다.
- 위의 Docker Compose 파일을 작성하고 저장합니다. 파일 이름은 "docker-compose.yml"로 지정할 수 있습니다.
- 터미널에서 해당 디렉토리로 이동한 후 다음 명령을 실행하여 컨테이너를 시작합니다:
docker-compose up -d
이제 SQL Server 데이터베이스와 CloudBeaver 클라이언트가 도커 컨테이너로 실행됩니다. 이제 이들에 액세스하려면 다음과 같이 할 수 있습니다:
- 데이터베이스에 액세스하려면 다음 정보를 사용합니다:
- 호스트 이름: SQLServer (이것은 Docker 컨테이너의 이름입니다)
- 포트: 1433
- 데이터베이스: master
- 데이터베이스 자격 증명: sa 및 MyPass@word
- SQL Server Management Studio를 사용하여 데이터베이스에 액세스하려면 다음 정보를 사용합니다:
- 서버 이름: localhost,5017
- 자격 증명: sa 및 MyPass@word
- "TrustServerCertificate = True"로 설정해야 할 수 있습니다. (https://stackoverflow.com/a/50504551/2948523)
이렇게 하면 SQL Server 데이터베이스와 CloudBeaver 클라이언트를 실행하고 편리하게 사용할 수 있게 됩니다.
MariaDB
MariaDB 데이터베이스를 설정하고, 해당 데이터베이스에 액세스하기 위한 PHPMyAdmin 또는 CloudBeaver 클라이언트를 Docker를 사용하여 구축하는 방법은 다음과 같습니다. 아래의 코드와 설명을 참고하세요.
version: "3.7"
services:
mariadb-db:
image: mariadb:10.6
container_name: MariaDB
restart: always
environment:
- MYSQL_DATABASE=quotes
- MYSQL_USER=citizix_user
- MYSQL_PASSWORD=An0thrS3crt
- MYSQL_ROOT_PASSWORD=mauFJcuf5dhRMQrjj
volumes:
- mariadb-data:/var/lib/mysql
ports:
- 5018:3306
volumes:
mariadb-data:
이 코드는 MariaDB 데이터베이스를 Docker 컨테이너로 설정합니다. 이를 실행하기 위해서는 다음 단계를 따라야 합니다:
- Docker가 설치되어 있어야 합니다.
- 위의 Docker Compose 파일을 작성하고 저장합니다. 파일 이름은 "docker-compose.yml"로 지정할 수 있습니다.
- 터미널에서 해당 디렉토리로 이동한 후 다음 명령을 실행하여 컨테이너를 시작합니다:
docker-compose up -d
MariaDB 데이터베이스가 이제 Docker 컨테이너에서 실행됩니다. 이제 데이터베이스에 액세스하려면 다음과 같이 할 수 있습니다:
- 데이터베이스에 액세스하려면 다음 정보를 사용합니다:
- 호스트 이름: MariaDB (이것은 Docker 컨테이너의 이름입니다)
- 포트: 3306
- 데이터베이스 자격 증명: citizix_user 및 An0thrS3crt
- PHPMyAdmin 또는 CloudBeaver와 같은 클라이언트를 사용하여 데이터베이스에 액세스할 수 있습니다. 이 클라이언트를 통해 데이터베이스에 연결하고 관리할 수 있습니다.
원문 : codeproject.com
댓글