- 도커 컴포즈 설치하기
- 참고 링크 : https://docs.docker.com/compose/install/standalone/
- docker compose 다운로드하기
- 실행커미션이 없는 상태
- 실행커미션 할당
- 컨테이너 빌드에서 운영까지
- 참고 링크 : https://docs.docker.com/compose/gettingstarted/
- 디렉토리 생성하기
- 빌드를 위한 Dockerfile생성
- app.py 생성하기
- 도커파일에서 컨테이너 python base image에 library 설치할 때,
requirements.txt에 있는 라이브러리를 설치함을 명시함. - Dockerfile 생성함
- base image = python
- 작업 directory = /code
- 환경변수 FLASK_APP=app.py
FLASK_RUN_HOST=0.0.0.0 - 기본 애플리케이션 설치하기
- RUN pip install -r requirements.txt 을 통해
pip 명령어로 requirement 설치하면 위 flask와 redis가 python 위에 설치됨
- app.py 생성하기
- docker-compose.yml 생성하기
- 현재 디렉토리 안에있는 Dockerfile을 기준으로 container build
- port 를 8000> 5000으로 포워딩
- redis 컨테이너 실행
- 도커 컴포즈에게 컨테이너 빌드 및 실행 명령
- docker compose up : yaml파일을 이용하여 빌드 및 실행을 요청, web과 redis 컨테이너가 실행됨
- 실행
- docker compose up : yaml파일을 이용하여 빌드 및 실행을 요청, web과 redis 컨테이너가 실행됨
- 기존에 동작중인 container 을 수정하여 운영
- 도커 이미지 확인
- 도커 컴포즈 중지
- docker-compose stop : 컨테이너 정지
- docker-compose down : 컨테이너 리소스 삭제
단, down은 해당 compose가 있는 directory에서 실행해야 함.
- compose.yaml 파일 수정
- 파일이 변경될 때마다 Compose는 파일을 /code컨테이너 내부의 해당 위치에 동기화함.
복사되면 번들러는 다시 시작하지 않고도 실행중인 애플리케이션을 업데이트함.
- 파일이 변경될 때마다 Compose는 파일을 /code컨테이너 내부의 해당 위치에 동기화함.
- docker-compose watch 옵션 /백그라운드 모드로 실행
- docker-compose ps
- 현재 docker-compose 에 의해서 실행된 container 목록 확인
- 실행
- app.py 수정
- 도커 이미지 확인
- docker-compose scale 변경
- docker-compose scale [name] = n 을 통해 scale in/out 가능
- 다만 포트포워딩 하고있는 포트가 정해져있기 때문에 외부에접속할수 있는 container 은 사용 X (충돌)
- docker-compose scale [name] = n 을 통해 scale in/out 가능
- 그 외 명령어
- docker-compose run [컨테이너명] env
- web 컨테이너의 환경변수 확인
- docker-compose logs [컨테이너명]
- compose를 통해 동작되고 있는 컨테이너 기록 확인
- docker-compose down --volumes
- docker-compose에서 만들어진 volumes도 동시에 삭제됨.
- docker-compose run [컨테이너명] env
- MYSQL 데이터베이스를 사용하는 wordpress 운영하기
- 참고 링크 : https://github.com/docker/awesome-compose/tree/master/official-documentation-samples/wordpress/
- 디렉토리 생성
- wordpress = webpage 를 만듬.
- mysql = DB를 저장함
- docker-compose.yml파일 생성.
- DB 서비스
- image: mariadb:10.6.4-focal
- volumes: db_data:/var/lib/mysql
- restart: 항상
- 환경 변수 :
- MYSQL_ROOT_PASSWORD=somewordpress
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress - 호스트 내부 포트 노출 : 3306, 33060
- wordpress 서비스
- image: wordpress:latest
- volumes: wp_data:/var/www/html
- ports: 컨테이너 내부의 80 (뒤) 포트가 호스트의 80 (앞)포트로 매핑되어 다른 호스트도 호스트 포트로 접근 가능
- restart: 항상
- 환경 변수 :
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=wordpress - 만약, wordpress 에서 depends_on: \n - db 로 한다면,
반드시 db 서비스를 실행한 뒤에 wordpress 시작.
- DB 서비스
- docker-compose 배포(background모드)
- docker-compose shutdown & cleanup
'쿠버네티스 > docker' 카테고리의 다른 글
Docker Install on VM (Ubuntu 22.04) (0) | 2024.05.10 |
---|---|
9-1. 빌드에서 운영까지 (0) | 2024.05.08 |
8-2. 컨테이너간 통신(네트워크) (0) | 2024.05.07 |
8-1. 컨테이너간 통신(네트워크) (1) | 2024.05.03 |
7-2.Docker Container Storage (0) | 2024.05.03 |