Docker-Compose 를 이용하여 Yona 사용하기
21세기 협업 개발 플랫폼인 :: Yona-Project 를 누구나 손쉽게 하기 위해 개인적으로 만듦
2022년 NHN Cloud 행사/프로모션 정보 공유 : https://doc.skill.or.kr/2022-NHN-Cloud-Event-Promotion
1. Yona Project 란 무엇인가?
Yona 는 21세기 협업 개발 플랫폼입니다.
Git 저장소 기능이 내장된 설치형 이슈트래커
Naver, Naver Labs 를 비롯하여 게임회사, 통신회사 고객센터, 공공기관, 투자사, 학교, 기업등에서 수년 간 실제로 사용되어 왔고 개선되어 온(Real world battled) 애플리케이션입니다.
2. Yona 의 주요기능은?
서비스 종료나 데이터 종속 걱정없는 설치형
프로젝트 기반의 유연한 이슈트래커와 게시판
편리한 프로젝트간 이슈 이동
서브 태스크 이슈
본문 변경이력 보기
이슈 템플릿 기능
자체 내장된 코드 저장소
Git/SVN 선택 가능
온라인 수정 및 커밋 지원
프로젝트 멤버만 코드에 접근 가능 기능 등
블럭기반 코드리뷰
코드 블럭 및 리뷰 스레드 지원
리뷰 점수 지원
그룹 기능
그룹 이슈 및 게시글 통합관리
그룹 프로젝트, 그룹 멤버
한글 기반
프로젝트 이름 및 그룹 이름에 한글을 사용가능
LDAP 지원
LDAP 장애시에도 사용가능한 기능 제공
다른 제품이나 서비스로의 마이그레이션 기능 제공
Github/Github Enterprise, 또 다른 Yona 인스턴스, Redmine 등
로그인 관련 보안을 높일 수 있는 소셜로그인 지원
3. Yona 의 라이센스는?
Yona는 Apache 2.0 라이선스로 제공됩니다.
4. dockerfile을 이용하여 만들어 보자!!!
4.1 서비스 설계 구성
구성
설명
Docker Hub Base Image
mariadb:10.3
Service Port
9000
4.2 파일 구성
메인 폴더
파일
설명
yona-project
dockerfile
dockerfile 설정 파일
docker-compose.yml
docker-compose 실행 파일
my.cnf
mariadb 의 my.cnf 설정 파일
db_user.sql
DB User 사용자 생성 및 권한 설정 비밀번호 변경이 필요 함.
/yona/conf/application.conf 파일의 maraidb 접속 ID/Password 를 수정
DB User 비밀번호 변경 시 아래의 값을 수정 하여야 합니다.
application.con 파일은 yona 를 처음 실행 해야 파일이 생성 됩니다.
경로 /yona/conf/application.conf 파일
... db.default.driver=org.mariadb.jdbc.Driver db.default.url="jdbc:mariadb://127.0.0.1:3306/yona?useServerPrepStmts=true" db.default.user=yona db.default.password="yonadan" ...
4.3 DockerFile 을 이용하여 Docker Images 만들기
### Base Image 지정
FROM mariadb:10.3
### TimeZone 환경 변수 지정
ENV TZ Asia/Seoul
### Mariadb root 비밀번호 설정
ENV MYSQL_ROOT_PASSWORD=root
### TimeZone 설정
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
### 업데이트
RUN apt update && apt -y install git vim wget openjdk-8-jdk unzip
### yona 및 mysql 설정파일
RUN mkdir /yona-data
COPY my.cnf /etc/mysql/my.cnf
### yona 설치 파일 다운로드 및 압축 해제
RUN wget https://github.com/yona-projects/yona/releases/download/v1.4.0/yona-v1.4.0-bin.zip
RUN unzip yona-v1.4.0-bin.zip
RUN mv yona-1.4.0 yona
### DB User 생성 및 권한 설정
ADD db_user.sql /docker-entrypoint-initdb.d/db_user.sql
WORKDIR /yona
EXPOSE 9000
4.4 DockerFile Build 하기
$ docker build -t tomcat_mariadb:yona-v.1.4.0 .
[+] Building 0.2s (15/15) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 552B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/mariadb:10.3 0.0s
=> [ 1/10] FROM docker.io/library/mariadb:10.3 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 59B 0.0s
=> CACHED [ 2/10] RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime && echo Asia/Seoul > /etc/timezone 0.0s
=> CACHED [ 3/10] RUN apt update && apt -y install git vim wget openjdk-8-jdk unzip 0.0s
=> CACHED [ 4/10] RUN mkdir /yona-data 0.0s
=> CACHED [ 5/10] COPY my.cnf /etc/mysql/my.cnf 0.0s
=> CACHED [ 6/10] RUN wget https://github.com/yona-projects/yona/releases/download/v1.4.0/yona-v1.4.0-bin.zip 0.0s
=> CACHED [ 7/10] RUN unzip yona-v1.4.0-bin.zip 0.0s
=> CACHED [ 8/10] RUN mv yona-1.4.0 yona 0.0s
=> CACHED [ 9/10] ADD db_user.sql /docker-entrypoint-initdb.d/db_user.sql 0.0s
=> CACHED [10/10] WORKDIR /yona 0.0s
=> exporting to image 0.1s
=> => exporting layers 0.0s
=> => writing image sha256:66a6be3fde0d4a31fdbe18a57a2283e75cb858f16e3edf929295ae141d220c80 0.0s
=> => naming to docker.io/library/tomcat_mariadb:yona-v.1.4.0 0.0s
Authenticating with existing credentials...
Login Succeeded
4.5 Build Image 를 이용하여 실행 해 보기
### Local docker images 검색
$ docker images | findstr yona
bchwang/tomcat_mariadb yona-v.1.4.0 66a6be3fde0d 16 hours ago 1.24GB
### docker 실행하기
$ docker run -d -p 80:900 tomcat_mariadb:yona-v.1.4.0
3d3811e3e7635545f0875e28f15cf79e128855b9c07ed07e0d59f8cd73bd58e3
### 실행된 docker 확인
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3d3811e3e763 yona-project:yona "docker-entrypoint.s…" Less than a second ago Up 3 seconds 3306/tcp, 0.0.0.0:80->9000/tcp, :::80->9000/tcp determined_moore
### 실행된 Container 에 접속 하기
$ docker exec -it 3d3811e3e763 /bin/bash
root@3d3811e3e763:/yona/bin# ls
yona yona.bat
### 실행된 Container 에 접속 하여 yona 실행 하기
root@3d3811e3e763:/yona/bin# ./yona ## ./yona & [백그라운드 실행]
Play server process ID is 213
[info] play - database [default] connected at jdbc:mysql://127.0.0.1:3306/yona
[info] play - Starting application default Akka system.
[debug] application - Registered AuthProvider 'google'
[debug] application - Registered AuthProvider 'github'
[info] play - Application started (Prod)
[info] application - User uploaded temporary files are cleaned up...(0 of 0)
[info] play - Listening for HTTP on /0.0.0.0:9000
5. Docker Hub 에 이미지 업로드
5.1 Docker push 를 이용하여 업로드
### docker image tag 설정
$ docker tag tomcat_mariadb:yona-v.1.4.0 bchwang/tomcat_mariadb:yona-v.1.4.0
### docker push 를 이용하여 업로드
$ docker push bchwang/tomcat_mariadb:yona-v.1.4.0
The push refers to repository [docker.io/bchwang/tomcat_mariadb]
5f70bf18a086: Layer already exists
6921f1ef6bdd: Layer already exists
4679a8f17301: Pushed
b9bd63f53b44: Pushed
2834b665eb52: Pushed
e69d19316294: Layer already exists
3bff3ec352d8: Layer already exists
e9cf36b34289: Pushed
c4c2468cd25c: Layer already exists
791a7442f3ff: Layer already exists
19c8780ee26f: Layer already exists
4b9f2147a623: Layer already exists
337e89027ad2: Layer already exists
956b4f80a078: Layer already exists
df8b8ee18301: Layer already exists
7e50f83cc60c: Layer already exists
b98c96f5ae6b: Layer already exists
b699e149afa6: Layer already exists
0552d4cbc6e9: Layer already exists
a70daca533d0: Layer already exists
yona-v.1.4.0: digest: sha256:95eb1ac4fe0f6221aa008429cdd4e1da1003d364ad11695ad1feaa10f91e3564 size: 4504
5.2 Docker hub 에 접속 하여 업로드 된 이미지 확인

6. Yona-Project 실행 하기
6.1 Docker-Compose.yml 설정 하기
version: '3.1'
services:
yona:
image: bchwang/tomcat_mariadb:yona-v.1.4.0
restart: always
ports:
- 80:9000
6.2 웹 접속 하여 Admin 설정 하기
크롬을 통해 웹사이트에 접속 하여 Admin 의 비밀번호를 설정 한 후 다시 한번 yona 를 재시작 하고 Admin 으로 로그인 하고 사용 하면 됩니다.
### docker-compose.yml 실행
$ docker-compose up -d
Starting yona_redmine_1 ... done
### 실행된 docker 확인
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3d3811e3e763 yona-project:yona "docker-entrypoint.s…" Less than a second ago Up 3 seconds 3306/tcp, 0.0.0.0:80->9000/tcp, :::80->9000/tcp determined_moore
### 실행된 Container 에 접속 하기
$ docker exec -it 3d3811e3e763 /bin/bash
root@3d3811e3e763:/yona/bin# ls
yona yona.bat
### 초 yona 실행 하기
root@3d3811e3e763:/yona/bin# ./yona ## ./yona & [백그라운드 실행]
Play server process ID is 213
[info] play - database [default] connected at jdbc:mysql://127.0.0.1:3306/yona
[info] play - Starting application default Akka system.
[debug] application - Registered AuthProvider 'google'
[debug] application - Registered AuthProvider 'github'
[info] play - Application started (Prod)
[info] application - User uploaded temporary files are cleaned up...(0 of 0)
[info] play - Listening for HTTP on /0.0.0.0:9000
### Admin 비밀번호 번경 후 yona 재시작 하기
root@3d3811e3e763:/yona/bin# ./yona ## ./yona & [백그라운드 실행]
Play server process ID is 213
[info] play - database [default] connected at jdbc:mysql://127.0.0.1:3306/yona
[info] play - Starting application default Akka system.
[debug] application - Registered AuthProvider 'google'
[debug] application - Registered AuthProvider 'github'
[info] play - Application started (Prod)
[info] application - User uploaded temporary files are cleaned up...(0 of 0)
[info] play - Listening for HTTP on /0.0.0.0:9000


7. Yona-Project 에서 yona 설치 방법
Yona 는 다음과 같은 2단계로 설치를 진행 합니다.
7.1 MariaDB 설치
자세한 사항은 홈페이지를 참고 하시기 바랍니다. 바로가기
7.2 Yona 설치
자세한 사항은 홈페이지를 참고 하시기 바랍니다. 바로가기
8 . 그 밖의 사항(Yona 실행 및 업그레이드/백업 및 복구/문제 해결)
그 밖에 사항에 대해서는 홈페이지를 참고 하시기 바랍니다. 바로가기
2022년 NHN Cloud 행사/프로모션 정보 공유 : https://doc.skill.or.kr/2022-NHN-Cloud-Event-Promotion
Last updated
Was this helpful?