컴퓨팅 기술/Docker

[Docker] Widnow11에서 도커로 APM 세팅하기

DSeung 2024. 2. 29. 11:52

Docker

도커란 컨테이너화 기술을 통해 애플리케이션을 패키징하여 사용하는 데

이 컨테이너 방식은 애플리케이션과 의존성을 함께 패키징함과 동시에 기존에 가상 머신을 사용하여 사용자 환경을 나누는 것과 비교하면 훨씬 가볍고 빠르게 구현으로 사용자 환경을 나눌 수 있습니다.

 

아래 이미지를 보면 왼쪽은 가상머신을 사용할 때의 상황을 가식화한거고

오른쪽 이미지는 컨테이너를 사용하는 방식입니다.

 

가상머신은 Guest OS까지 띄우고 진행해야 한다는 점에서 도커보다 무겁고 느릴 수밖에 없습니다.

https://cloudacademy.com/blog/docker-vs-virtual-machines-differences-you-should-know/

 

Docker Desktop 다운로드

Desktop에서 Docker를 관리하기 용이하게 해주는 Docker Desktop을 다운해줍시다.

https://www.docker.com/products/docker-desktop/

 

Docker Desktop: The #1 Containerization Tool for Developers | Docker

Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.

www.docker.com

위 페이지에서 Download for Windos를 받아줍시다.

 

다음처럼 다운로드를 하고

이제 설치가 완료되면 재부팅이 되고 아래 창이 나오면 성공

이제 로그인 정보를 입력하시고 아래 화면까지 오면 성공입니다.

 

docker-compose.yml 파일 설정

이제 작업을 할 폴더에서 아래 yml 파일을 만들어줍시다.

속성 별 담당하는 기능입니다.

  • version : docker-compse.yml 파일의 버전을 지정함
  • services : 서비스(컨테이너)의 목록을 지정하고, 서비스는 각각 별도의 컨테이너로 실행함
  • image : image로 해당 컨테이너에 넣을 패키지와 버전을 선택할 수 있음
  • ports : 호스트의 IP 컨테이너의 IP를 매핑을 정
  • volumes : 해당 폴더와 컨테이너 내부 폴더를 마운트 처리하여 이를 통해 컨테이너와 호스트 간에 데이터 동기화를 가능케 해 줌
  • depends_on : 다른 컨테이너와의 관계를 지정하는 걸로 컨테이너가 생성되는 순서를 지정 가능
  • command : 컨테이너가 시작될 때  명령을 지정하는데 이걸로 컨테이너의 기본 명령을 업데이트 가능
  • environment : 컨테이너에서 사용할 변수를 정의하여 컨테이너에 설정에 정보를 전달할 수 있다

docker-compse.yml

version: '3.9'
 
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    depends_on:
      - db
    volumes:
      - ./html:/var/www/html/
    ports:
      - 5000:80

  db:
    container_name: mysql
    image: mysql:latest
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_USER: root
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - ./mysql/init:/docker-entrypoint-initdb.d

저는 호스트(로컬)에서의 포트 충돌을 피하기 위해 apache는 5000으로 매핑했습니다.

각자 로컬 환경에 맞춰 포트를 조절을 하시면 됩니다.

Dockerfile

FROM php:7.2-apache
RUN docker-php-ext-install mysqli
EXPOSE 80

저는 필요한 PHP 버전이 7.2이기에 지정을 했습니다, 필요한 경우 바꾸시면 됩니다.

Docker 실행해 보기

docker-compose.yml를 설정한 폴더로 가서 아래 명령어를 통해 빌드 후 백그라운드로  실행할 수 있습니다.

※ 종료시는 ctrl + c로 할 수 있습니다.

docker-compose up --build
docker-compose up -d

 

실행 후 docker desktop에 아래와 같은 image들이 추가된 걸 볼 수 있습니다.

이미지들은 나중에 다시 컨테이너에 필요할 경우 재활용되어 사용됩니다.

이미지 이름이 docker-test-apm-web인 이유는 Dockerfile로 빌드를 진행했기 때문입니다.

컨테이너도 다음처럼 생긴 걸 볼 수 있습니다.

다음처럼 폴더가 생길 것입니다.

이제 html/index.php을 다음 내용으로 추가합시다.

<?php
	echo "Hello World";
?>

그리고 마지막으로 localhost:5000으로 접속하면 반가운 Hello World를 볼 수 있습니다.

반응형