Docker Composite는 다중 컨테이너 Docker 응용 프로그램을 정의하고 조정할 수 있는 도구입니다. YAML 파일을 사용하여 응용 프로그램의 컨테이너, 네트워크 및 볼륨을 구성합니다.
작곡은 다양한 용도로 사용될 수 있습니다. 단일 호스트 애플리케이션 배포, 자동화된 테스트 및 로컬 개발은 Docker Composite의 가장 인기 있는 사용 사례입니다.
이 튜토리얼에서는 Debian 9에 최신 버전의 Docker Composite를 설치하는 과정을 안내합니다. 또한 기본 Docker Composer 개념 및 명령도 살펴보겠습니다.
전제조건
이 자습서를 계속하기 전에 다음 필수 구성 요소를 충족했는지 확인하십시오.
- sudo 권한을 가진 사용자로 로그인
- Debian 9 컴퓨터에 Docker를 설치
Debian에 Docker Composer 설치
Docker Composer 설치 패키지는 공식 Debian 9 저장소에서 사용할 수 있지만 항상 최신 버전은 아닐 수 있습니다. 권장되는 방법은 Docker의 GitHub 저장소에서 Docker Composite를 설치하는 것입니다.
이 기사를 작성할 때 최신의 안정적인 Docker Composite 버전은 버전 1.23.1입니다. Composing binary를 다운로드하기 전에 GitHub의 Composing repository 릴리스 페이지를 방문하여 다운로드할 수 있는 새 버전이 있는지 확인하십시오.
Debian 9에 최신 버전의 Docker Composite를 설치하려면 다음 단계를 수행하십시오.
먼저 다음 curl 명령을 사용하여 Docker Composite 바이너리를 /usr/local/bin 디렉토리에 다운로드합니다.
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
다운로드가 완료되면 Composite 이진 파일에 대한 실행 권한을 부여합니다.
sudo chmod +x /usr/local/bin/docker-compose
다음을 입력하여 설치를 확인합니다.
docker-compose --version
# docker-compose version 1.23.1, build b02f1306
Docker Composite 시작
이 섹션에서는 Docker Composite를 사용하여 Debian 9 컴퓨터의 WordPress 스택을 관리하는 방법에 대해 설명합니다.
먼저 프로젝트의 디렉터리를 만들고 이 디렉터리로 변경하십시오.
mkdir wordpress_app
cd wordpress_app
텍스트 편집기를 열고 프로젝트 디렉토리 내에 docker-compose.yml 파일을 작성합니다.
다음 내용을 붙여넣습니다.
# docker-compose.yml
version: '3.3'
services:
db:
image: mysql:5.7
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
wordpress:
image: wordpress
restart: always
volumes:
- ./wp_data:/var/www/html
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
depends_on:
- db
volumes:
db_data:
wp_data:
그러면 위의 코드는 무엇을 하는 걸까요?
첫 번째 줄에서는 Composite 파일 버전을 지정합니다. 특정 도커 릴리스를 지원하는 Composite 파일 형식에는 여러 가지 버전이 있습니다.
다음으로, 우리는 db와 워드프레스라는 두 가지 서비스를 정의합니다. 각 서비스는 이미지 하나를 실행하고 도커 합성 실행 시 별도의 컨테이너를 만듭니다.
db 서비스 :
mysql:5.7 이미지를 사용합니다. 이미지가 시스템에 없는 경우 Composite가 Docker Hub 공용 리포지토리에서 이미지를 가져옵니다.
컨테이너가 항상 다시 시작하도록 지시하는 항상 다시 시작 정책을 사용합니다.
데이터베이스를 유지할 명명된 볼륨 db_data를 생성합니다.
mysql:5.7 이미지에 대한 환경 변수를 정의합니다.
wordpress service :
wordpress 이미지를 사용합니다. 이미지가 시스템에 없는 경우 Composite가 Docker Hub 공용 리포지토리에서 이미지를 가져옵니다.
컨테이너가 항상 다시 시작하도록 지시하는 항상 다시 시작 정책을 사용합니다.
호스트의 wp_data 디렉토리를 컨테이너 내부의 /var/lib/mysql에 마운트합니다.
컨테이너의 노출 포트 80을 호스트 시스템의 포트 8080으로 전달합니다.
워드프레스 이미지의 환경 변수를 정의합니다.
datast_on 명령은 두 서비스 간의 종속성을 정의합니다. 이 예에서는 워드프레스 전에 db가 시작됩니다.
프로젝트 디렉터리에서 다음 명령을 실행하여 WordPress 응용 프로그램을 시작합니다.
docker-compose up
# ...
# wordpress_1_70f2f980e1fb | [Mon Nov 19 18:00:31.002748 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.12 configured -- resuming normal operations
# wordpress_1_70f2f980e1fb | [Mon Nov 19 18:00:31.002912 2018] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
Composite(합성)는 두 개의 이미지를 모두 끌어오고, 두 개의 컨테이너를 시작하고, 프로젝트 디렉터리에 wp_data 디렉토리를 생성합니다.
브라우저에 http://0.0.0:8080/을 입력하면 Wordpress 설치 화면이 표시됩니다.
이 때 WordPress 응용 프로그램이 실행되고 있으며 테마 또는 플러그인에 대한 작업을 시작할 수 있습니다.
작성을 중지하려면 Ctrl+C를 누릅니다.
-d 플래그를 전달하여 Composite(구성)를 분리 모드로 시작할 수도 있습니다.
docker-compose up -d
실행 중인 서비스를 확인하려면 ps 옵션을 사용합니다.
docker-compose ps
# Name Command State Ports
# ----------------------------------------------------------------------------------
# wordpress_app_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
# wordpress_app_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:
서비스를 중지하기 위해 Composite가 분리된 모드에서 실행 중인 경우 다음을 사용합니다.
docker-compose stop
컨테이너를 완전히 제거하려면 다음 옵션을 사용하십시오.
docker-compose down
--volumes 스위치를 통과하면 데이터 볼륨도 제거됩니다.
docker-compose down --volumes
Docker Composite 제거
Docker Composite를 제거해야 하는 경우 다음을 입력하여 이진 파일을 제거할 수 있습니다.
sudo rm /usr/local/bin/docker-compose
'SW > 리눅스' 카테고리의 다른 글
CentOS 7 : VSFTPD로 FTP Server 설정 방법, 예제, 명령어 (0) | 2021.03.18 |
---|---|
Devian 9 : phpMyAdmin with Apache 설치, 구성 방법, 예제, 명령어 (0) | 2021.03.17 |
Ubuntu 18.04 : Flask 설치하는 방법, 예제, 명령어 (0) | 2021.03.15 |
LINUX : SFTP Command로 파일 전송하는 방법, 예제, 명령어 (0) | 2021.03.14 |
Ubuntu 18.04 : Nagios 설치, 구성 방법, 예제, 명령어 (0) | 2021.03.13 |