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