Linux (Ubuntu/Debian)
방법 1: Docker Desktop과 함께 설치 (권장)
bash
# Docker Desktop 설치 (Docker Compose 포함)
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
# Docker GPG 키 추가
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Docker 저장소 추가
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker 설치
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
방법 2: 독립 설치
bash
# 최신 버전 다운로드
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 실행 권한 부여
sudo chmod +x /usr/local/bin/docker-compose
macOS
Homebrew 사용:
bash
brew install docker-compose
Docker Desktop 설치: Docker Desktop for Mac을 설치하면 Docker Compose가 자동으로 포함됩니다.
Windows
Docker Desktop for Windows를 설치하면 Docker Compose가 자동으로 포함됩니다.
WSL2에서 Linux 방식으로 설치도 가능합니다.
설치 확인
설치 완료 후 다음 명령어로 확인:
bash
docker-compose --version
# 또는 최신 버전의 경우
docker compose version
사용자 그룹 추가 (Linux)
sudo 없이 사용하려면:
bash
sudo usermod -aG docker $USER
이후 로그아웃/로그인 또는 newgrp docker 실행
어떤 운영체제를 사용하고 계신지 알려주시면 더 구체적인 도움을 드릴 수 있습니다!
재시도
Claude는 아직 생성한 코드를 실행할 수 없습니다.
K
docker-compose mysql 설치
편집
Docker Compose를 사용해서 MySQL을 설치하는 방법을 안내해드리겠습니다.
기본 MySQL 설정
docker-compose.yml 파일 생성:
docker-compose.yml - MySQL 기본 설정
코드
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql_server
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: your_database_name
MYSQL_USER: your_username
MYSQL_PASSWORD: your_password
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
networks:
- mysql_network
volumes:
mysql_data:
networks:
mysql_network:
driver: bridge
실행 방법
bash
# MySQL 컨테이너 시작
docker-compose up -d
# 로그 확인
docker-compose logs mysql
# MySQL 접속
docker-compose exec mysql mysql -u root -p
고급 설정 (추가 옵션 포함)
docker-compose.yml - MySQL 고급 설정
코드
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql_server
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root123}
MYSQL_DATABASE: ${MYSQL_DATABASE:-myapp}
MYSQL_USER: ${MYSQL_USER:-appuser}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-password123}
# 시간대 설정
TZ: Asia/Seoul
ports:
- "${MYSQL_PORT:-3306}:3306"
volumes:
# 데이터 영구 저장
- mysql_data:/var/lib/mysql
# 초기화 스크립트
- ./init:/docker-entrypoint-initdb.d
# 커스텀 설정
- ./mysql.conf:/etc/mysql/conf.d/custom.cnf:ro
command: --default-authentication-plugin=mysql_native_password
networks:
- mysql_network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
timeout: 20s
retries: 10
# phpMyAdmin (선택사항)
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
restart: always
environment:
PMA_HOST: mysql
PMA_PORT: 3306
PMA_ARBITRARY: 1
ports:
- "8080:80"
depends_on:
- mysql
networks:
- mysql_network
volumes:
mysql_data:
driver: local
networks:
mysql_network:
driver: bridge
환경변수 설정 (.env 파일)
.env - 환경변수 설정
코드
# MySQL 설정
MYSQL_ROOT_PASSWORD=your_secure_root_password
MYSQL_DATABASE=myapp_db
MYSQL_USER=appuser
MYSQL_PASSWORD=your_secure_password
MYSQL_PORT=3306
# phpMyAdmin 포트
PHPMYADMIN_PORT=8080
MySQL 커스텀 설정 파일 (선택사항)
mysql.conf - MySQL 커스텀 설정
코드
[mysqld]
# 기본 문자셋
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 연결 관련
max_connections=200
wait_timeout=300
# 메모리 설정
innodb_buffer_pool_size=256M
key_buffer_size=32M
# 로그 설정
slow_query_log=1
slow_query_log_file=/var/lib/mysql/slow.log
long_query_time=2
# 바이너리 로그
log-bin=mysql-bin
binlog-format=ROW
expire_logs_days=7
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
주요 명령어
bash
# 컨테이너 시작
docker-compose up -d
# 컨테이너 중지
docker-compose down
# 볼륨까지 삭제 (데이터 완전 삭제)
docker-compose down -v
# MySQL 접속
docker-compose exec mysql mysql -u root -p
# 데이터베이스 백업
docker-compose exec mysql mysqldump -u root -p your_database > backup.sql
# 백업 복원
docker-compose exec -T mysql mysql -u root -p your_database < backup.sql
# 로그 확인
docker-compose logs -f mysql
초기화 스크립트 예시
init/ 폴더에 .sql 파일을 넣으면 컨테이너 생성 시 자동 실행됩니다:
init/01-init.sql - 초기화 스크립트
코드
-- 데이터베이스 생성 (이미 환경변수로 생성되므로 생략 가능)
-- CREATE DATABASE IF NOT EXISTS myapp_db;
-- 사용할 데이터베이스 선택
USE myapp_db;
-- 테이블 생성 예시
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 초기 데이터 삽입
INSERT INTO users (username, email, password) VALUES
('admin', 'admin@example.com', 'hashed_password'),
('user1', 'user1@example.com', 'hashed_password');
-- 권한 설정 (필요한 경우)
-- GRANT ALL PRIVILEGES ON myapp_db.* TO 'appuser'@'%';
-- FLUSH PRIVILEGES;
폴더 구조
your_project/
├── docker-compose.yml
├── .env
├── mysql.conf (선택사항)
└── init/ (선택사항)
└── 01-init.sql
접속 정보
- MySQL 서버: localhost:3306
- phpMyAdmin: http://localhost:8080 (포함된 경우)
- 사용자명: 환경변수에서 설정한 값
- 비밀번호: 환경변수에서 설정한 값