9-2. 빌드에서 운영까지

2024. 5. 10. 12:23·쿠버네티스/docker
  1. 도커 컴포즈 설치하기
    1. 참고 링크 : https://docs.docker.com/compose/install/standalone/
    2. docker compose 다운로드하기
    3. 실행커미션이 없는 상태
    4. 실행커미션 할당
  2. 컨테이너 빌드에서 운영까지
    1. 참고 링크 : https://docs.docker.com/compose/gettingstarted/
    2. 디렉토리 생성하기
    3. 빌드를 위한 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 위에 설치됨
    4. docker-compose.yml 생성하기
      • 현재 디렉토리 안에있는 Dockerfile을 기준으로 container build
      • port 를 8000> 5000으로 포워딩
      • redis 컨테이너 실행
    5. 도커 컴포즈에게 컨테이너 빌드 및 실행 명령
      • docker compose up : yaml파일을 이용하여 빌드 및 실행을 요청, web과 redis 컨테이너가 실행됨
      • 실행
    6. 기존에 동작중인 container 을 수정하여 운영
      • 도커 이미지 확인
      • 도커 컴포즈 중지
        • docker-compose stop : 컨테이너 정지
        • docker-compose down : 컨테이너 리소스 삭제
          단, down은 해당 compose가 있는 directory에서 실행해야 함.
      • compose.yaml 파일 수정
        • 파일이 변경될 때마다 Compose는 파일을 /code컨테이너 내부의 해당 위치에 동기화함.
          복사되면 번들러는 다시 시작하지 않고도 실행중인 애플리케이션을 업데이트함.
      • docker-compose watch 옵션 /백그라운드 모드로 실행
      • docker-compose ps
        • 현재 docker-compose 에 의해서 실행된 container 목록 확인
      • 실행
      • app.py 수정
    7. docker-compose scale 변경
      • docker-compose scale [name] = n 을 통해 scale in/out 가능
        • 다만 포트포워딩 하고있는 포트가 정해져있기 때문에 외부에접속할수 있는 container 은 사용 X (충돌)
    8. 그 외 명령어
      • docker-compose run [컨테이너명] env
        • web 컨테이너의 환경변수 확인
      • docker-compose logs [컨테이너명]
        • compose를 통해 동작되고 있는 컨테이너 기록 확인
      • docker-compose down --volumes
        • docker-compose에서 만들어진 volumes도 동시에 삭제됨.
  3. MYSQL 데이터베이스를 사용하는 wordpress 운영하기
    1. 참고 링크 : https://github.com/docker/awesome-compose/tree/master/official-documentation-samples/wordpress/
    2. 디렉토리 생성
      1. wordpress = webpage 를 만듬.
      2. mysql = DB를 저장함
    3. 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 시작. 
    4. docker-compose 배포(background모드)
    5. docker-compose shutdown & cleanup

'쿠버네티스 > docker' 카테고리의 다른 글

ip와 port의 개념  (0) 2025.03.02
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
'쿠버네티스/docker' 카테고리의 다른 글
  • ip와 port의 개념
  • Docker Install on VM (Ubuntu 22.04)
  • 9-1. 빌드에서 운영까지
  • 8-2. 컨테이너간 통신(네트워크)
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • python (30)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (30)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
      • 에러일기 (1)
      • AWS (27)
      • Jmeter (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    포스트맨
    로스트아크api
    애플리케이션로그
    스터디
    사드웨어리소스
    도커
    리눅스
    테스트 계획서
    로스트아크
    API
    linux
    k8s
    python
    e2c
    LOSTARK
    앱공존성
    postman
    쿠버네티스
    .cpu
    QAKOREA
    네트워크 테스트
    vi에디터
    cka
    공존성테스트
    개발자에서아키텍트로
    application log
    테스트 결과보고서
    테스트스크립트
    테스트 계획서 만들어보기
    qa
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
9-2. 빌드에서 운영까지
상단으로

티스토리툴바