services:
localdb:
container_name: tester # 컨테이너 이름
image: mysql:8.0 # MySQL 8.0 이미지를 사용할 것
ports:
- 3309:3306 # 외부(로컬) 3309번 포트 → 컨테이너 내부 3306 포트로 연결
environment: # 환경변수 설정
MYSQL_ROOT_PASSWORD: TestdbRoot
MYSQL_DATABASE: testdb
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --log_bin_trust_function_creators=1
volumes: # 데이터 볼륨 매핑
- ./mysql:/var/lib/mysql
services
각 서비스는 컨테이너로 구현된다. 하나의 프로젝트로 도커 컴포즈에 의해 관리된다.
생성될 컨테이너들을 묶어놓은 단위이다. 아래 항목들로 컨테이너의 옵션을 지정할 수 있다.
image
내가 아는 그 이미지 말고,,,
애플리케이션을 실행하는 데 필요한 모든 것을 포함하는 실행 가능한 소프트웨어 패키지이다.
이 이미지가 컨테이너가 어떻게 생성될지 알려준다. OS에 독립적이다.
port
3309로 열게 된 이유는 Mysql이 기본적으로 3306 포트를 사용하기 때문에 충돌을 피하기 위함이다.
3309:3306
➡️ 내 컴퓨터에서는 3309로 접속하면, 컨테이너 안의 3306과 연결해줌 이거다.
volumes
컨테이너를 껏다 켜도 MySQL 데이터가 사라지지 않게 해준다.
command
컨테이너가 시작할 때 기본으로 실행할 명령어를 덮어쓰는 기능이다.
위의 image를 통해 기본 설정으로 서버를 실행하는데, 이때 추가적으로 특정 설정을 적용하고 싶다? 이럴때 사용하는 것이 command이다.
- --character-set-server=utf8mb4
MySQL 서버 기본 문자셋을 utf8mb4로 설정, 모든 데이터베이스 기본 문자 인코딩을 utf8mb4로 하겠다. - --collation-server=utf8mb4_unicode_ci
정렬방식을 지정한다 - --log_bin_trust_function_creators=1
프로시저 작성할 때 보안 검사를 건너뛰겠다.
$> docker-compose up -d
# ⇐⇒ docker-compose up -d
# down (container 제거)
$> docker-compose down
# 확인
$> docker ps
# cf. 시작만 (docker compose stop)
$> docker compose start
# 완전삭제: -volumne, -stop, -force
$> docker compose rm -vsf
$> docker exec -it hana7db bash
‘Docker란 무엇인가’가 무엇인지 모르겠다
몇 년 전부터 도커는 핫한 기술이었으며, 지금은 거의 업계 표준이 되면서 개발자라면 필수로 알아야할 기술이 되었습니다. 이직 준비를 공부를 하기 위해 도커에 대해 검색 해보니, 아래의 내
velog.io
'기타' 카테고리의 다른 글
| [Git] Merge의 종류, Squash, Rebase 이젠 이해하자 (0) | 2025.04.03 |
|---|---|
| NVM을 이용해 node버전 쉽게 변경하기 (0) | 2025.04.03 |
| [Git] Git stash (0) | 2025.04.02 |
| [Git] Git Reset& Revert (1) | 2025.04.02 |
| [Git] git의 작업영역과 파일 상태 (2) | 2025.04.01 |