Flutter (4) Server Build - Docker

Huisu·2023년 3월 11일
0

Flutter

목록 보기
4/21
post-thumbnail

Docker

Docker

  • 컨테이너 기반으로 서버나 개발 환경을 간단하게 만들고 제거하는 기술

  • Docker와 같은 컨테이너 기술은 linux 운영체제를 기반으로 함

    • 따라서 리눅스 운영체제가 아닌 윈도우나 맥에서는 도커를 설치하면 리눅스 운영체제의 가상머신을 설치하여 Docker를 사용하도록 지원
    • app store에서 program을 설치해 process를 생성하는 것처럼 docker hub에서 image를 다운로드해 container를 실행할 수 있음
    • program이 여러 개의 process를 가질 수 있는 것처럼 image도 여러 개의 container를 가질 수 있음
    • PULL: docker hub에서 image를 다운로드받는 행위
    • RUN: image에서 container를 실행하는 행위
  • 백엔드 데이터를 다루는 PHP와 mySQL을 따로 설치하지 않고 Docker를 이용해서 구현

  • 쉬운 개발을 위해 Docker Desktop 설치 후 개발 환경 구축

docker pull

  • Docker hub에서 여러 image들을 살펴볼 수 있음

  • 예제로 apache webserver 사용

    • docker hub에서 apache webserver는 httpd라는 이름을 가지고 있음

    • docker에서 관리하는 공식적인 image 중 하나

  • docker pull httpd라는 코드를 통해 다운로드 가능

  • terminal/cmd에 docker pull httpd를 적으면 다운로드 시작

  • docker images 코드를 통해 잘 다운로드했는지 확인 가능

  • docker desktop에서 images 목록을 통해서도 확인 가능

dockerfile

  • VSC로 원하는 폴더에 dockerfile 생성 후 아래와 같이 작성

    • 이미 만들어져 있는 ubuntu linux 18.04 버전을 가지고 와서 개발 환경을 구축하겠다는 코드
    • 22.04 버전까지 나와 있지만 본 예제에서는 18.04 버전 사용
  • ubuntu 다운로드 후 library의 최신 버전 유지를 위해 다음과 같은 코드 작성

    • apache2 와 software-properties-common을 설치하겠다는 코드
  • 언어 팩 UTF-8로 통일과 새로운 repository 등록

  • libapache2-mod-php를 설치하고 관련된 라이브러리 모두 설치

  • 80 port 열고 apache 백그라운드로 실행

docker-compose.yml

  • 여러 이미지들을 서로 연동하게끔 하는 코드

  • docker-compose 3.3 버전 사용

  • 요청할 서비스에 webserver와 MySQL 존재

  • webserver

    • 미리 작성해 둔 dockerfile php 코드

    • bhild: 현재 directory 내에 있는 dockerfile 찾아서 실행

    • ports: 연결해 두었던 80 port 사용

    • links: 하단에 있는 다른 컨테이너와 연결

    • restart: 항상 재시작

    • volumes: local에 있는 html 파일과 연결해서 local에서 작업한 파일을 server에서 바로 볼 수 있도록 함

    • depends-on: mysql에 의존성을 갖고 있어 mysql이 만들어진 뒤에 실행되도록 함

  • mysql

    • image: mysql 버전 5.7 사용
    • platform: m1 맥북 사용자라면 추가
    • environment: MYSQL root에 대한 설정값
    • volumes: mysql 데이터가 저장되는 곳이랑 local PC의 data라는 폴더와 연결시켜 주는 코드
    • port: mysql의 기본 포트인 3306 포트 열기
  • 터미널에 docker-compose build 입력 후 도커 설치

  • 터미널에 docker-compose up -d 입력 후 백그라운드에서 실행

  • mysql 다운로드 후 폴더 생성된 모습

  • docker desktop에서도 다운로드된 이미지 확인 가능

    • mysql, php-mysql-webserver 다운로드
  • 현재 설정값이 없어 아무것도 표시되지 않는 게 정상이지만 웹서버에서도 확인 가능

  • php 동작 확인

    • html 폴더 안에 index.php 파일 하나 생성

    • php 정보 불러오는 코드를 작성하면 localhost:9001 포트에서 정보가 잘 출력됨

0개의 댓글