Domjudge 7.3 - 1st에서 AWS EC2 ubuntu 인스터스를 시작하고 Docker engine을 설치했습니다.
이어서 Domjudge의 docker image를 실행시키겠습니다.
자세한 사항은 Docker hub에 있는 공식 메뉴얼을 참고하세요.
Domjudge Docker hub : hub.docker.com/r/domjudge/domserver/
Docker Hub
hub.docker.com
MariaDB Container를 먼저 실행시키고 Domserver Container를 실행시킵니다.
docker run 명령어로 각 컨테이너 실행시키고 뒤에 따라오는 매개변수들을 이용해서 간단하게 설정합니다.
docker run에 대한 간단한 옵션들은 아래 표를 참고하시고 자세한 사항은 docker run --help로 확인할 수 있습니다.
옵션 | 설명 |
-i, -t | -interactive -tty i와 t는 터미널 입력을 위한 옵션으로 일반적으로 -it 혹은 -i -t |
-d | detached mode 흔히 말하는 백그라운드 모드 |
--name | 컨테이너 이름 설정 |
-p | 호스트와 컨테이너 포트의 연결 : 포워딩 |
-e | 컨테이너 내에서 사용할 환경변수 설정 |
-rm | 프로세스 종료시 컨테이너 자동 삭제 |
--link | 컨테이너 연결 [컨테이너명:별칭] |
-v | 호스트와 컨테이너의 디렉토리 연결 (마운트) |
-e | 컨테이너 내에서 사용할 환경변수 설정 |
(출처 : swiftymind.tistory.com/82)
MariaDB container
$ sudo docker run -it --name dj-mariadb -e MYSQL_ROOT_PASSWORD=rootpw -e MYSQL_USER=domjudge -e MYSQL_PASSWORD=djpw -e MYSQL_DATABASE=domjudge -p 13306:3306 mariadb --max-connections=1000
공식 메뉴얼에 있는 MariaDB Container 실행 명령어를 하나씩 보면 아래와 같이 설정되어 있습니다. 비밀번호 같은 경우 원하면 수정해서 사용할 수 있다.
docker run
-it
--name dj-mariadb
-e MYSQL_ROOT_PASSWORD=rootpw
-e MYSQL_USER=domjudge
-e MYSQL_PASSWORD=djpw
-e MYSQL_DATABASE=domjudge
-p 13306:3306
mariadb
--max-connections=1000
저느 공식 메뉴얼에서 제공해준 명령어에서 대회의 시간을 한국시간에 맞추기 위해 -v 옵션을 추가해주고 백그라운드에서 실행되도록 옵션을 -itd로 해주었습니다.
$ date
$ sudo timedatectl set-timezone Asia/Seoul
ubuntu host의 시간이 한국 시간이 아닌 경우 date로 확인해보고 위의 명령어로 변경해줍니다.
이제 mariadb container를 실행시킵니다.
$ sudo docker run -itd --name dj-mariadb -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=rootpw -e MYSQL_USER=domjudge -e MYSQL_PASSWORD=djpw -e MYSQL_DATABASE=domjudge -p 13306:3306 mariadb --max-connections=1000
$ sudo docker exec -it dj-mariadb bash
mariadb -u root -p
docker exec 명령으로 docker container안으로 들어가서 mariadb를 확인하면 domjudge 데이터베이스가 생긴 것을 확인할 수 있습니다. 이때 비밀번호는 위에 docker run 명령어에서 "-e MYSQL_ROOT_PASSWORD=rootpw" 이렇게 설정했었습니다.
DOMserver container
$ sudo docker run --link dj-mariadb:mariadb -it -e MYSQL_HOST=mariadb -e MYSQL_USER=domjudge -e MYSQL_DATABASE=domjudge -e MYSQL_PASSWORD=djpw -e MYSQL_ROOT_PASSWORD=rootpw -p 12345:80 --name domserver domjudge/domserver:latest
공식 메뉴얼에 있는 DOMserver container 실행 명령어를 하나씩 보면 아래와 같이 설정되어 있습니다.
docker run
--link dj-mariadb:mariadb
-it
-e MYSQL_HOST=mariadb
-e MYSQL_USER=domjudge
-e MYSQL_DATABASE=domjudge
-e MYSQL_PASSWORD=djpw
-e MYSQL_ROOT_PASSWORD=rootpw
-p 12345:80
--name domserver domjudge/domserver:latest
이 밖에도 설정할 수 있는 환경변수는 아래와 같고 이에 대한 설명은 docker hub에서 확인할 수 있습니다.
위의 환경변수 중에서 CONTAINER_TIMEZONE을 서울로 해서 추가해주고 port는 12345에서 80으로 수정해서 host의 80port로 설정하고 mariadb와 연결해서 시작합니다.
$ sudo docker run --link dj-mariadb:mariadb -it -e MYSQL_HOST=mariadb -e MYSQL_USER=domjudge -e MYSQL_DATABASE=domjudge -e MYSQL_PASSWORD=djpw -e MYSQL_ROOT_PASSWORD=rootpw -e CONTAINER_TIMEZONE=Asia/Seoul -p 80:80 --name domserver domjudge/domserver:latest
이렇게 정상적으로 실행이됩니다. 마지막에 보면 Initial admin passowrd와 judehost password를 알려줍니다.
이것을 기록해두겠습니다.
DOserver로 접속하기 위해 EC2 인바운드 규칙을 수정해줍니다.
AWS EC2 consol로 가서 인스턴스를 선택한 다음 보안>> 보안그룹의 링크로 갑니다.
인바운드 규칙 편집.
HTTP로 위치무관으로 설정하고 규칙 저장합니다.
변경된 사항 확인하고 EC2 인스턴스의 http://public ip로 접속합니다.
이렇게 초기의 DOMjudge화면을 볼 수 있습니다.
우측 상단에 로그인 버튼을 눌러줍니다.
ID는 admin, Password는 위에서 기록해 놓은 admin password를 입력합니다.
기록해 놓지 않았다면 아래의 명령어로 초기 비밀번호를 확인할 수 있습니다.
$ sudo docker exec -it domserver cat /opt/domjudge/domserver/etc/initial_admin_password.secret
이렇게 관리자 페이지로 들어가서 대회를 설정할 수 있습니다.
'Domjudge' 카테고리의 다른 글
Domjudge 7.3 -4th (sudo: unable to resolve host judgedaemon0) (0) | 2021.09.04 |
---|---|
Domjudge 7.3 - 3rd (Judgehost 연결) (0) | 2021.02.14 |
Domjudge 7.3 - 1st (AWS EC2실행 및 Docker 설치) (1) | 2021.01.01 |