728x90
개념
- 각 프로젝트의 Dockerfile을 생성해야하고, 프로젝트끼리 연결해줘야 하는 번거로움을 없앨 수 있는 파일
- 상차림의 매뉴얼
- 어느 서버에든 도커 환경만 설치되어 있으면 git 등으로 이 프로젝트를 다운받고 도커로 실행해서 이 컴퓨터와 똑같은 환경을 조성하고 문제 없이 서비스 돌릴 수 있음
- 컨테이너에 만들 내용을 레시피처럼 적어놓고 실행만 하면 됨
[실습 1]
docker-compose.yml
#https://docs.docker.com/compose/compose-file/compose-file-v3/ 에서 버전 확인 가능 version: '3' services: #항목명 = 서비스명 = 네트워크 호스트명 database: # Dockerfile이 있는 위치 build: ./database # 내부에서 개방할 포트 : 외부에서 접근할 포트 ports: - "3306:3306" #항목명 = 서비스명 = 네트워크 호스트명 backend: build: ./backend # 연결할 외부 디렉토리 : 컨테이너 내 디렉토리 volumes: - ./backend:/usr/src/app ports: - "5000:5000" # 환경변수 설정 environment: - DBHOST=database #항목명 = 서비스명 = 네트워크 호스트명 frontend: build: ./frontend # 연결할 외부 디렉토리 : 컨테이너 내 디렉토리 volumes: - ./frontend:/home/node/app ports: - "8080:8080"
> docker-compose up -d
> docker-compose up --build
[실습 2]
[1번 방법]
> docker run -d --name mysql alicek106/composetest:mysql mysqld
> docker run -d -p 80:80 --link mysql:db --name web alicek106/composetest:web apachectl -DFOREGROUND
- mysql 이미지 컨테이너로 실행
- apache 이미지 컨테이너로 실행
[2번 방법]
docker-compose.yml
version: '3' services: web: #이름 정할 수 있음 build: . image: alicek106/composetest:web ports: - 80:80 links: - mysql:db command: apachectl -DFOREGROUND mysql: image: alicek106/composetest:mysql command: mysqld
> docker-compose up -d
> git clone ssh://git@13.125.232.197:/home/git/repos/encore
- docker-compose.yml 있는 폴더에서 실행
git 프로젝트 내 docker-compose.yml
version: '3' services: web: #Dockerfile을 build함 build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - ./:/usr/src/app/ ports: - 8000:8000
git 프로젝트 내 Dockerfile
# pull official base image FROM python:3.8.0-alpine # set work directory WORKDIR /usr/src/app # set environment variables ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 RUN apk update RUN apk add postgresql-dev mariadb-dev gcc python3-dev musl-dev zlib-dev jpeg-dev #--(5.2) COPY . /usr/src/app/ # install dependencies RUN pip install --upgrade pip RUN pip install -r requirements.txt
encore 프로젝트 안에서 저장해야 함
> docker-compose build
> docker-compose up
git 프로젝트 내 .env.dev
DEBUG = 1 SECRET_KEY = 'django-insecure-al8snexs%yj2+$uo3v&ct!9al=w-d75@3-84)e-i)ymqvd!np)' DJANGO_ALLOWED_HOSTS = localhost 127.0.0.1 [::1]
git 프로젝트 내 docker-compose.yml
version: '3' services: web: #Dockerfile을 build함 build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - ./:/usr/src/app/ ports: - 8000:8000
> docker-compose build
> docker-compose up
> git pull origin master
> docker-compose --env-file .env build
> docker-compose up
또는
> docker-compose up -d
- git clone한 폴더 내에서 실행
- git이 수정될 때마다 바꾸고 실행하려면 위에서 3줄 반복
- git 안쓰면 2번째 줄부터 반복
git 프로젝트 내 docker-compose.yml 수정
version: '3' services: nginx: build: ./nginx volumes: - static_volume:/usr/scr/app/static ports: - 80:80 depends_on: - web web: build: . command: gunicorn config.wsgi:application --bind 0.0.0.0:8000 volumes: - static_volume:/usr/src/app/static - ./:/usr/src/app/ ports: - 8000:8000 volumes: static_volume:
> docker-compose down
- up한거 down
'두두의 IT' 카테고리의 다른 글
Docker에 React 컨테이너 띄우기 (0) | 2022.03.14 |
---|---|
Docker에 Spring Boot 컨테이너 띄우기 (0) | 2022.03.14 |
도커 파일(Dockerfile) 개념/작성/실행/배포 (0) | 2022.03.12 |
도커 명령어(pull, create, start, attach, commit, run, stop, images, ps, exec, rm, container, volume, inspect, logs) (0) | 2022.03.12 |
쿠버네티스 / 도커 / 도커 허브 / 도커 이미지 / 도커 컨테이너 / 도커 볼륨 (0) | 2022.03.12 |