CICD/docker
[Docker] 빌드에서 운영까지
[dev] hiro
2024. 6. 19. 19:26
해당 포스팅은 이성미 강사님의 따라 배우는 도커(따배도, https://www.youtube.com/@ttabae-learn)를 보고 공부한 내용을 정리한 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
오늘은 고통스럽다.
내일은 더 고통스럽다.
그리고 내일 모래는 아름다울 것이다.
Mǎ Yún(알리바바 그룹 창업자 겸 회장)
Docker Compose
- 여러 컨테이너를 일괄적으로 정의하고 실행할 수 있는 툴
- 하나의 서비스를 운영하기 위해서는 여러개의 애플리케이션이 동작해야함.
- 컨테이너화 된 애플리케이션들을 통합 관리할 수 있음
- 옵션을 기존 명령어 형태가 아닌 yaml의 문법에 맞춰서 작성하면 docker compose가 컨테이너 관리
https://docs.docker.com/compose/install/linux/#install-the-plugin-manually
Install the Compose plugin
Download and install Docker Compose on Linux with this step-by-step handbook. This plugin can be installed manually or by using a repository.
docs.docker.com
Docker Compose로 컨테이너 실행
몇가지 example:
https://docs.docker.com/guides/workshop/08_using_compose/#use-docker-compose
Use Docker Compose
Using Docker Compose for multi-container applications
docs.docker.com
version | compose 버전. 버전에따라 지원 문법이 다름 version: “2” |
port | 컨테이너가 공개하는 포트 나열 web: image: httpd:latest port: - 80 - 8443:443 |
services | 컴포즈를 이용해서 실행할 컨테이너 옵션 정의. service: webserver: image: nginx db: image: redis |
link | 다른 컨테이너와 연계할 때 연계할 컨테이너 지정. webserver: image: wordpress:latest link: db: mysql |
build | 컨테이너 빌드 webapp: build: . |
expose | 포트를 링크로 연계된 컨테이너에게만 공개할 포트 webapp: build: . |
image | compose를 통해 실행할 이미지를 지정. webapp: image: centos:7 |
volumes | 컨테이너에 볼륨을 마운트 webapp: image: httpd volumes: - /var/www/html |
command | 컨테이너에서 실행될 명령어 지정 app: image: node:12-alpine command: sh -c “yarn install && yarn run dev” |
environment | 컨테이너에 적용할 환경변수를 정의 database: image: mysql: 5.7 environment: MYSQL_ROOT_PASSWORD: pass |
restart | 컨테이너가 종료될 때 적용할 restart 정책 no: 재시작 되지 않음 always: 컨테이너를 수동으로 끄기 전까지 항상 재시작 on-failure: 오류가 있을 시에 재시작. database: image: mysql:5.7 restart: always |
depends_on | 컨테이너 간의 종속성을 정의. 정의한 컨테이너가 먼저 동작되어야 함. services: web: image: wordpress:latest depends_on: - db db: image: mysql |
1. 서비스 디렉토리 설정
mkdir webserver
cd webserver
2. docker-compose.yml 생성
cat > docker-compose.yml
version: "3"
services:
web:
image: httpd:latest
ports:
- "80:80"
links:
- mysql:db
command: apachectl -DFOREGROUND
mysql:
image: mysql:latest
command: mysqld
environment: MYSQL_ROOT_PASSWORD: pass
3. docker-compose 명령어
docker-compose up -d # 실행시켜줘. (백그라운드로 -d)
docker-compose ps # 현재 디렉토리의 컨테이너 상태 확인
docker-compose scale mysql=2 # MySQL 컨테이너 두개로
docker-compose ps
docker-compose down # 컨테이너 완전히 종료
### 이외에도 많은 명령어가 있음..
빌드에서 운영까지
- 서비스 디렉토리 생성
- 빌드 파일 생성
- yaml 파일 생성
- 도커 컴포즈 실행