본문 바로가기

OS-서버/윈도우

docker-compose 개발 환경 구성

반응형

ி docker-compose

  • 대부분 시스템은 단일 애플리케이션으로 구동되지 않고 Frontend / Backend / DB / 검색엔진 등 여러 앱이 서로 유기적으로 구성
  • 한 컨테이너가 하나의 앱을 담당하므로 여러 개의 컨테이너를 실행해야 하는 번거로움이 존재
  • 도커 컴포즈는 여러 개의 컨테이너를 한 번에 관리 가능
  • docker-compose.yml 혹은 docker-compose.yaml 파일로 작성



ி docker-compose 문법

 
https://docs.microsoft.com/ko-kr/visualstudio/docker/tutorials/use-docker-compose

version

 
docker-compose.yml 내용을 해석하기 위한 문법 버전( 안전 버전 3 )

services

 
image
 # docker-compose.yml
 services:
   django:       # [컨테이너명]:
     image: ...  # image : [이미지명]:[태그명]
   postgres:
     image: ....
  • services 아래의 django는 컨테이너명, 즉, django는 하나의 컨테이너
  • 컨테이너명 입력 후 사용할 이미지 이름과 태그(버전) 입력, 태그 생략 시 최신 버전 설치됨
  • 이미지가 없으면 자동으로 도커 허브에서 이미지를 가져와 사용

build
 # docker-compose.yml
 services:
   nginx:
     build: .
 
 # Dockerfile
 FROM centos:7
  • Dockerfile 경로를 지정
  • Dockerfile을 이용해 자동으로 docker build 후 이미지로 사용 가능


docker-compose

 docker-compose up -d # 도커 백그라운드 실행
 docker-compose up --force-recreate # 도커 컨테이너 새로 생성
 docker-compose up --build # 도커 이미지 빌드 후 컨테이너 실행
 docker-compose build # 이미지를 빌드만 하고, 컨테이너를 시작하지 않음
 docker-compose up  # 이미지가 존재하지 않을 경우에만 빌드하며, 컨테이너를 시작
 docker-compose down # 도커 컴포즈 중지
  • 소스 수정이 이루어졌을 때 다시 이미지를 빌드해야 하므로 --build 옵션 사용을 권함

networks

 
도커에서 사용하는 네트워크 어댑터 조회
 $ docker network ls 

bridge 네트워크 어댑터
한 호스트 컴퓨터 내에서 여러 컨테이너를 서로 연결

host 네트워크 어댑터
호스트 컴퓨터와 동일한 네트워크에서 컨테이너를 구동

도커의 bridege 네트워크 주소가 기존에 사용하고 있는 사설 주소와 충돌이 발생할 경우
아래 설정 예시를 참고하여 IP를 변경

 # docker-compose.yml
 networks:
  default:
   ipam:
    driver: default
    config:
    - subnet: 172.27.3.0/24




ி 워드프레스 블로그 설치

 ## mkdir my_wordpress
 ## cd my_wordpress/
 
 # docker-compose.yml
 version: "3.9"
     
 services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
     
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
 volumes:
   db_data: {}
  • depends_on(의존성) - 특정 이미지 실행이 완료된 후 그 다음 이미지 실행,
    db를 먼저 실행하도록 wordpress 컨테이너의 depends_on을 db로 설정



ி github 활용

 
docker-compose 파일을 작성하여 github에 업로드하면 아래 예시처럼 몇 줄 안되는 명령으로
필요한 환경을 구축할 수 있다.

$ git clone https://github.com/jdh5202/Docker.git
$ cd ap-web # 서버 선택
$ ./start_service.sh # 환경 설치 및 실행
$ docker ps # 서버 실행 확인
localhost:8080 접속






반응형

'OS-서버 > 윈도우' 카테고리의 다른 글

도커 명령어  (0) 2021.04.13
도커 Node.js 이미지 빌드  (0) 2021.04.13
WSL2 도커 설치 및 환경 설정  (0) 2021.04.13
윈도우 액티브 디렉터리(Active Directory)  (0) 2020.05.12
WPI로 XE 홈페이지 만들기  (0) 2020.05.11