백엔드 구현에 필요한 환경들을 구축하고 내가 개발한 Flutter앱과 연동하는 게시글을 작성해보겠다. 첫 번째로 Docker 설치부터 알아보겠다.
docker 설치하기
도커는 셋팅하는 것이 상당히 쉽다고 한다. 도커에 대해 깊이 알려면 공부해야 할 것들이 굉장히 많은데
가장 많이 쓰이지만 간단하게 도커를 이용해 백엔드 환경을 구축하는 방법에 대해 알아보고자 한다.
단, 이 게시글에는 도커에 대한 개념, 지식이 없이 바로 설치/실습으로 간단히 들어가기 때문에 개념에 대해서는 공식 문서나 다른 게시글을 확인하시길 바란다.
나는 이번에 하게 된 스터디에서 매우 훌륭한 강사님께서 직접 지도를 해 주시기에 소중한 가르침을 기록으로 남겨둬야 겠다는 생각이 든다.
늘 Flutter로 앱 화면을 구성하고 Firebase를 통해 데이터 처리를 해본 것이 전부인데, 이번 계기로 백엔드를 구성하고 데이터 연동하는 것까지 지식을 쌓는 것이 목표이다.
보통 본인만의 도커를 구성해놓으면 git에 올려놓아서 새로운 프로젝트를 할 때 git에서 clone 후에 사용 가능하는 것 같다.
실제로 서비스 운영시 쓰이는 도커의 동작 방식은 docker-compose up 으로 한 번에 실행으로 여러 컨테이너들을 실행하여 백엔드 환경을 띄우는 것이다. (컨테이너라면 php나 하나의 프로그램, db등이 될 수 있다.)
내가 배우는 것에 해당한다면 컨테이너는 총 3개가 될 것이다. (nginx, php, mariadb)
굳이 docker-compose를 쓰지 않고 각 컨테이너마다 따로 띄워준다면 각각의 이미지들을 별도로 받고 각각의 컨테이너를 띄우는 작업이 3번 반복되어야 할 것이다.
그러나 docker-compose up을 실행한다면 필요한 Nginx를 다운받아 설치하고 php를 다운받아 설치하고
db를 다운받아 설치하고 3개를 연동하며 이 모든것들이 명령어 한 번으로 실행이 끝나게 된다.
https://hub.docker.com/editions/community/docker-ce-desktop-windows/ 에서 다운받자. 주의할 점이 있는데 Mac 사용자의 경우 Download for Mac - Intel Chip / Apple Chip 이 구분되어 있으니 본인에게 맞는 사양으로 다운받도록 하자.
설치 후 확인
도커 실행 : Spotlight에서 docker 검색 후 실행
hub.docker.com 사이트에 접속하여 회원가입도 해주자.
회원가입과는 별개로 조금 전 설치된 docker를 바로 실행을 해보도록 하자. 터미널 열고 아래 명령어를 입력해보자.
// docker / 실행해라 / 백그라운드옵션 / Host포트는 1234이고 서버포트는 80 / nginx이미지:최신버전
$ docker run -d 1234:80 nginx:lastest
nginx가 apache에 비해 처음엔 어렵게 느껴질 수 있으나 쓰면 쓸수록 간편하고 마음이 편안해지는 서버이다.
docker exec : 현재 실행 중인 컨테이너에 명령을 하고 . -it 옵션을 주면 터미널 창으로 들어갈 수 있어서 컨테이너 내부의 관리가 가능해진다.
$ docker exec -it nginx-container /bin/bash
궁극적으로는 docker-compose를 쓰게 된다.
docker-compose는 여러 개의 컨테이너 설정을 하나의 파일(명령)으로 관리할 수 있게 해준다.
vi docker-compose.yml 를 통해 version과 services를 미리 등록해 사용할 수 있다.
이미지를 생성하면 컨테이너가 생성되고 그 컨테이너에 이미지가 담긴채 실행된다.
만약 여러개의 컨테이너를 실행하고 싶은 경우 터미널을 여러 개 띄우고 각각의 컨테이너가 실행돼야 하겠지만
docker-compose를 통해 미리 설정해둔 컨테이너들이 한 번에 실행되게 되는 것이다.
그리고 nginx를 실행할 때 포트 정보가 있어야 실행된 후에 접속할 수 있기 때문에 docker-compose 파일에 포트정보도 함께 설정해주도록 한다.
version: '3.3'
services:
nginx:
image: nginx:lastest
ports:
- "1234:80"
오늘은 docker 설치 및 nginx 이미지를 컨테이너에 담아 실행하는 간단한 실습만 해보았다.
다음 번에는 php, mariaDB 추가 설정을 해보도록 하겠다.
댓글