서론

필자는 클라이언트로부터 요청받은 소스코드를 돌려 나온 결과값을 응답으로 처리해야하는 문제에 직면하게 되었다. 이 문제를 해결한 예시가 없을지 살펴보던 와중 “백준” 사이트가 눈에 들어왔고, 백준의 ‘채점 서버’ 시스템의 구조를 분석하기 시작했다. 유동적인 채점 서버풀 생성 및 관리 시스템을 본 나는 Docker로 해결가능하다고 생각이 들었고, 소스코드 컴파일 서버구축을 위해 Docker Compose를 사용하여 ubuntu 가상환경을 구축했다.

Docker Compose란?

필자가 이미 작성한 페이지를 보면 될거 같다.

Docker compose 정리

Source Code

version: "3.8"

services:
  compiler:
    container_name: compiler_ubuntu
    build:
      context: .
      dockerfile: DockerFile
    user: root
    ports:
      - "3000:80"
    tty: true
    stdin_open: true

tty와 stdin_open을 켜주어, Docker Compose에서 컨테이너가 올라간 뒤 bin/bash 가 실행 후 정상종료가 되는 현상을 방지했다. 이 두 옵션은 bin/bash가 실행된 이후 사용자의 입력을 무한대기한다.

FROM ubuntu:latest

ARG DEBIAN_FRONTEND=interactive

RUN apt update -y
RUN apt install software-properties-common -y
RUN apt upgrade -y
RUN apt install -y git

# [email protected]이 이미 [email protected]에 내포되어 있음.

ubuntu 이미지를 Docker Hub를 통해 다운받아 apt update와 upgrade를 다 해주었다. 이는 이후 apt 패키지 관련으로 충돌이 일어남을 방지하기 위해서이다.