[DevOps] Nginx 도커로 띄우기, 왜 Docker인가?
https://ghan2.tistory.com/125 [DevOps] Apache와 Spring Boot 연결1. 왜 Apache와 Spring Boot를 연결할까?Spring Boot는 기본적으로 내장 톰캣을 사용한다. (처음에 스프링 부트로 설정해놓고 톰캣에 띄우려고 해서 애
ghan2.tistory.com
저번주에는 도커를 사용해서 웹 서버와 어플리케이션을 올렸고
이제 개발을 위한 데이터베이스를 띄워보려고 한다.
무료고 접근성이 좋은 mysql로 선택했다.
데이터 저장용 디렉토리 만들기
sudo mkdir -p /data/mysql
sudo chown -R 999:999 /data/mysql
chown으로 디렉토리의 소유자(owner)와 그룹(group)을 변경한다.
MySQL Docker 컨테이너 실행
docker run -d \
--name my-mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
-e MYSQL_DATABASE=mydb \
-e MYSQL_USER=myuser \ (username)
-e MYSQL_PASSWORD=mypassword \ (password)
-p 3306:3306 \
-v /data/mysql:/var/lib/mysql \
mysql:8.0
이렇게 실행만 해주면 mysql 서버가 생성된다!

docker exec -it craft mysql -u root -p
: Docker 컨테이너 안에서 MySQL 클라이언트를 실행해서 DB에 접속하는 명령어
💡 명령어 주석
exec 컨테이너 안에서 명령어 실행
-it (-i: interactive, -t: pseudo-TTY)→ 터미널처럼 입력받을 수 있게 만듦
craft 실행 대상 컨테이너 이름 👉 현재 MySQL 서버가 실행 중인 컨테이너
mysql 컨테이너 안에서 실행할 명령어 (MySQL 클라이언트)
-u root 접속할 MySQL 사용자: root
-p 비밀번호 입력받기 옵션 (실행 후 직접 입력)

개발환경 어디서나 디비에 접속하고 싶어서 데이터베이스는 별도로 띄우려고 한다.
서버 포트 열어주기
sudo ufw allow 3306
MySQL 사용자 권한을 외부 접속 가능하게 변경
-- 1. 사용자 생성 (이미 있다면 생략 가능)
CREATE USER 'craft'@'%' IDENTIFIED BY '{외부접속용 비밀번호}';
-- 2. 권한 부여
GRANT ALL PRIVILEGES ON craft.* TO 'craft'@'%';
-- 3. 권한 즉시 적용
FLUSH PRIVILEGES;
MySQL은 사용자 계장을 구분할 때
'user'@'host'와 같이 구분한다.
이는 단순히 사용자 이름만 보는게 아니라,
어디서 접속하는 사용자냐(host)까지도 분리해서 관리하는 것이다.
외부 접속 포트포워딩
이제 여기까지 했으면 공유기 페이지에서 3306을 통해 들어올 수 있도록 열어준다.

🥊 도커로 데이터베이스 띄우기 완료 !
spring: datasource: url: jdbc:mysql://{아이피주소}/{데이터베이스 이름}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
driver-class-name: com.mysql.cj.jdbc.Driver
username: {사용자이름}
password: {비밀번호}
'Docker' 카테고리의 다른 글
| [Docker] Docker Compose 기본 포맷 (0) | 2024.11.23 |
|---|---|
| [Docker] 도커에 대한 기본 이해 (0) | 2024.11.22 |