[๊ฐ€์ƒํ™” - Container] Docker Container๋ฅผ ์ด์šฉํ•œ Redmine ์„ค์น˜ํ•˜๊ธฐ

2023. 7. 12. 06:00ใ†System ์ž‘์—…์‹ค/DevOps

728x90
๋ฐ˜์‘ํ˜•

 




 

 

Redmine Cookbook

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

๐Ÿš€ Docker Container๋ฅผ ์ด์šฉํ•œ Redmine ์„ค์น˜ํ•˜๊ธฐ

    ๐Ÿ”ฝ ๊ฐœ์š”

        ๐Ÿ“ฆ ์†Œ๊ฐœ

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์ผ์ • ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ณ , ๊ณผ์—…์— ๊ด€๋ จํ•œ ํ‹ฐ์ผ“์„ ๋ฐœ๊ธ‰ํ•˜๊ณ , ๊ณผ์—…์„ ์›ํ• ํ•˜๊ฒŒ ํ• ๋‹น๋ฐ›๊ณ , ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” Redmine์ด๋ผ๋Š” ๊ฒƒ์„ ์„ค์น˜ํ•ด ๋ณด๋ ค๊ณ  ํ•ด์š”.

์‚ฌ์‹ค ์ด์ „์— ์ž ์‹œ ๋™์•ˆ Redmine์„ ์‚ฌ์šฉํ–ˆ์—ˆ์œผ๋‚˜, ํฌ๋ฃจ๋“ค์˜ ์š”๊ตฌ์‚ฌํ•ญ์ด ํ•ธ๋“œํฐ์œผ๋กœ ํ™•์ธ ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด์˜€๋Š”๋ฐ, OpenVPN์„ ํ†ตํ•ด VPN๋ง์„ ์ ‘์†ํ•ด์•ผ ์ด์šฉ์ด ๊ฐ€๋Šฅํ–ˆ๋˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋กœ ๊ตฌ์ถ•๋œ System์—์„œ ํ•ธ๋“œํฐ์ด๋‚˜, ํ…Œ๋ธ”๋ฆฟ์œผ๋กœ OpenVPN ์ ‘์†์ด ๋‹ค์†Œ ์–ด๋ ค์šด ๊ฒƒ์„ ํ™•์ธํ–ˆ๊ณ , ์ด ๋•Œ๋ฌธ์— Redmine์„ ์ปดํ“จํ„ฐ ์™ธ์—๋Š” ์ ‘์†ํ•  ์ˆ˜ ์—†์—ˆ์–ด์š”.

๊ทธ๋ž˜์„œ ๋น„์šฉ์„ ๋‚ด๋Š” ๊ฒƒ์„ ๊ฐ์•ˆํ•˜๊ณ , JIRA๋ฅผ ์‚ฌ์šฉ ํ•˜์˜€์—ˆ์œผ๋‚˜, ์กฐ๋ฆฝ ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜๋Š” ๋“ฑ์˜ ๋น„์šฉ์ ์ธ ๋ฌธ์ œ๋กœ ์ธํ•ด JIRA์—์„œ ๋ฌด๋ฃŒ ์„œ๋น„์Šค๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” Redmine์„ ๋‹ค์‹œ ๊ตฌ์ถ•ํ•˜๊ณ , ์ด์šฉํ•ด ๋ณด๋ ค๊ณ  ํ•ด์š”.

์ด๋ฒˆ์— ๋‚ด๋ถ€ ์ ‘์†์„ ์œ„ํ•ด ๊ธฐ์กด OpenVPN์ด ์•„๋‹Œ WireGuard๋ฅผ ๊ตฌ์ถ•ํ–ˆ๊ณ , ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ฐœ๊ฐœ์ธ์˜ ๋‹จ๋ง์—์„œ ์ ‘์†ํ•˜๊ธฐ ํŽธํ•  ๊ฒƒ์ด๋ผ๋Š” ํŒ๋‹จ์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ตฌ์ถ•ํ•˜๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋งŒ, Redmine์— ํฌ๋‚˜ํฐ ๋‹จ์ ์€ UI๊ฐ€ ์ •๋ง ๋ณ„๋กœ๋ผ๋Š” ์ ์ด์—์š”.

 

 

 

        ๐Ÿ“ฆ Redmine ์ด๋ž€?

Redmine์€ Project ๊ด€๋ฆฌ ๋„๊ตฌ๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•˜๊ณ , Issue Tracker๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•ด์š”.
์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ๊ทธ๋žจ์ด๋ฉด์„œ ์›น ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์œผ๋กœ Task, ๊ฒฐํ•จ, Issue ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋ฉฐ, ๊ด€๋ จ๋ถ„์•ผ ์˜คํ”ˆ์†Œ์Šค ์ค‘ ์ „์„ธ๊ณ„ ์ ์œผ๋กœ ์‚ฌ์šฉ ์ธต์ด ๋„“๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ง•

โˆ™ ๋‹ค์ค‘ ํ”„๋กœ์ ํŠธ ์ง€์›
โˆ™ ์œ ์—ฐํ•œ ์—ญํ• ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด
โˆ™ ์œ ์—ฐํ•œ Issue ์ถ”์  ๊ธฐ๋Šฅ
โˆ™ ๊ฐ„ํŠธ Chart, ๋‹ฌ๋ ฅ, Load Map, ๊ฒŒ์‹œํŒ, ๋ฌธ์„œ, File, News, Wiki ๋“ฑ์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์ œ๊ณต
โˆ™ Email Alarm ๊ธฐ๋Šฅ
โˆ™ ํ˜•์ƒ๊ด€๋ฆฌ ์‹œ์Šคํ…œ๊ณผ ์—ฐ๋™
   - SVN, Git, CVS, Mercurial, Bazaar Darcs ๋“ฑ
โˆ™ ๋‹ค๊ตญ์–ด ์ง€์›
โˆ™ ๋‹ค์ˆ˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ง€์›
โˆ™ ๋ชจ๋ฐ”์ผ์•ฑ ์ง€์›
โˆ™ ์œ ์—ฐํ•œ ํ™”๋ฉด ๊ตฌ์„ฑ

Redmine์˜ ์ƒ์šฉ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋„๋ฆฌ ์•Œ๋ ค์ง„ Jira ๋“ฑ์ด ์žˆ์œผ๋‚˜, ์ฃผ๋‹ˆ์“ฐ๋Š” ๋ฌด๋ฃŒ๋กœ Project ๊ด€๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ํ˜„์žฌ ์ƒํ™ฉ์— ๋งž๊ฒŒ Redmine์„ ๊ตฌ์ถ•ํ•˜๋ ค๊ณ  ํ•ด์š”.

Redmine์€ Project๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ, ํ•„์š”ํ•œ ๋„๊ตฌ๋“ค์„ ์ œ๊ณตํ•˜๋Š” Service๋กœ ์ฃผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ Service๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.

โˆ™ ์ผ์ •๊ด€๋ฆฌ
โˆ™ ๊ฐ„ํŠธ์ฐจํŠธ
โˆ™ ๋กœ๋“œ๋งต(๋ฒ„์ „, ๋งˆ์ผ์Šคํ†ค)
โˆ™ ๊ฒฐํ•จ๊ด€๋ฆฌ
โˆ™ ์ด์Šˆ ๋ฐ ๋ฆฌ์Šคํฌ ๊ด€๋ฆฌ
โˆ™ ๋‹ฌ๋ ฅ
โˆ™ ๋‰ด์Šค
โˆ™ ์œ„ํ‚ค
โˆ™ ๊ฒŒ์‹œํŒ
โˆ™ ํŒŒ์ผ
โˆ™ ์ €์žฅ์†Œ
โˆ™ ์ผ๊ฐํ๋ฆ„ (์›Œํฌํ”Œ๋กœ์›Œ)
โˆ™ ์ด๋ฉ”์ผ ์•Œ๋ฆผ
โˆ™ ์œ ์—ฐํ•œ ํ™”๋ฉด ๊ตฌ์„ฑ
โˆ™ ๋‚ด ํŽ˜์ด์ง€

 

 

 

    ๐Ÿ”ฝ ์ดˆ๊ธฐ ๊ตฌ์„ฑ

        ๐Ÿ“ฆ Data Base

์ตœ์ดˆ Redmine์— Project ๊ด€๋ฆฌ์— ํ•„์š”ํ•œ Data๋ฅผ ๋‹ด์•„๋‘˜ ์ˆ˜ ์žˆ๋Š” Data Base๊ฐ€ ํ•„์š”ํ•ด์š”.

Redmine์€ MySQL ํ˜น์€ Maria DB๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”.

์ฃผ๋‹ˆ๋Š” DataBase Docker๋ฅผ ๋ชจ์•„๋‘˜ ๊ฐ€์ƒ ๋จธ์‹ ์— Docker๋ฅผ ์ด์šฉํ•˜์—ฌ Maria DB๋ฅผ ์„ค์น˜ํ•˜๊ณ , ์ด์šฉํ•ด ๋ณด๋ ค๊ณ  ํ•ด์š”.

Redmine์— Bitnami๋ฅผ ํ†ตํ•ด Tomcat, PHP, MySQL๋“ฑ์„ ํ•œ๋ฒˆ์— ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์œผ๋‚˜, ๋”ฐ๋กœ RDBMS๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๋‹ˆ์“ฐ๋Š” ๊ฐœ๋ณ„์ ์œผ๋กœ ์„ค์น˜ํ•˜๊ณ , ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ์–ด์š”.

MariaDB ์„ค์น˜ ๋ฐ ์„ค์ • ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ์ด ๊ณณ์— ๊ด€์‹ฌ์„ ์ฃผ์„ธ์š”.

 


์ฃผ๋‹ˆ๋Š” Data Base๋ฅผ ๋งŒ๋“ค๊ณ , ์œ„์™€ ๊ฐ™์ด Redmine์šฉ Data Base๋ฅผ ๋งŒ๋“ค๊ณ , ๊ณ„์ •์„ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.

 

 

 

        ๐Ÿ“ฆ Docker ์ค€๋น„

์ด๋ฒˆ์—๋Š” Docker Image๋ฅผ ๋‚ด๋ ค ๋ฐ›๋„๋ก ํ• ๊ฒŒ์š”.

redmine


์ฃผ๋‹ˆ๋Š” ์ด Image๋ฅผ ๋‚ด๋ ค ๋ฐ›์•„ ์ค„๊ฑฐ์—์š”.

์ด Image๋ฅผ ์„ ํƒํ•œ ์ด์œ ๋Š” ์™ธ๋ถ€ Data Base์™€์˜ ์—ฐ๋™์ด ๋ณด๋‹ค ๊ฐ„ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.

์ฃผ๋‹ˆ๋Š” ์ด๋ฒˆ์—” Docker Compose๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌ์ถ•์„ ํ•ด๋ณด๋ ค ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Docker Compose๋ฅผ ์ž‘์„ฑํ•ด ๋ณผ๊ฒŒ์š”.

vim docker-compose.yml

 

์ฃผ๋‹ˆ๊ฐ€ ์ž‘์„ฑํ•œ Docker Compose File์ด์—์š”.

ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋‚ด์šฉ์€ ๋ณด๋‹ค ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์œ„์™€ ๊ฐ™์ด ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ Mapping ํ•ด ์ฃผ๋ ค๊ณ  ํ•ด์š”.

์ฃผ๋‹ˆ์“ฐ๋Š” ํฌ๋ฃจ๋“ค์ด ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ถ™๊ฒŒํ•˜๊ธฐ ์œ„ํ•ด http Port๋ฅผ ๊ทธ๋ƒฅ ์“ฐ๊ธฐ๋กœ ํ–ˆ์–ด์š”.

๊ทธ๋ฆฌ๊ณ , enviroment ๋ถ€๋ถ„์— DB ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์—ˆ์–ด์š”.

 


ํ™˜๊ฒฝ ๋ณ€์ˆ˜ File์€ ์œ„์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•ด ์ฃผ๋ฉด ๋œ๋‹ต๋‹ˆ๋‹ค.

 

docker-compose up -d --build

 


Docker๋ฅผ ๊ธฐ๋™ ์‹œ์ผฐ๊ณ , ์ •์ƒ์ ์œผ๋กœ ๊ธฐ๋™๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

docker logs --tail -f <Docker Container ID>

 

์ถ”๊ฐ€์ ์œผ๋กœ ์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Log๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•œ ์ค„ ์”ฉ ํ™•์ธํ•ด ์ค„ ์ˆ˜ ์žˆ์–ด์š”.

tail -f ๋Š” Terminal ์ƒ์—์„œ ํฌ๊ทธ๋ผ์šด๋“œ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋Š”
๋ช…๋ น์–ด๋กœ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋“ค์–ด์˜ค๋Š” Log๋ฅผ ๋ณผ ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์—์š”.


 


์œ„์™€ ๊ฐ™์ด ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

์ตœ์ดˆ ๊ธฐ๋ณธ ๊ณ„์ •์€ ์•„๋ž˜์™€ ๊ฐ™์•„์š”.

ID: admin
๋น„๋ฐ€๋ฒˆํ˜ธ: admin

 







๐Ÿง ์ฐธ๊ณ  ์ž๋ฃŒ

 

Redmine - Redmine ๋ฌด๋ฃŒ ํ…Œ๋งˆ

0. ํ…Œ๋งˆ ์„ค์น˜ ๋ฐฉ๋ฒ• Redmine ํ…Œ๋งˆ ๋””๋ ‰ํ† ๋ฆฌ( ../public/themes/)์— ํ…Œ๋งˆ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: redmine-theme-gitmike → Gitmike _ ๋ช…๋ น์–ด: mv redmine-theme-gitm

qideun.com

 

 

 

 

Redmine Cookbook

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•