MkDocs์์ PlantUML ํ์
5578 ๋จ์ด docker-compose๋์ปคplantumlMkDocs
์กฐ๊ธ ์ค๋๋ง์ ์๋นํ ์์ ๋ฌธ์๋ฅผ ์ธ ํ์์ฑ์ด ๋์๊ธฐ ๋๋ฌธ์ MkDocs๋ก ํ๊ฒฝ ์ ๋ํ๋ ค๊ณ ์๊ฐํ์ ๋ ๋ง์ค์์ผ๋ฏ๋ก ๋น๋ง๋ก.
ํ๊ฒฝ์ ๋ชจ๋ ๋์ปค ๋ก ์์ฑํฉ๋๋ค.
docker๋ก ํ๊ฒฝ ์ ๋ํ๊ธฐ
PlantUML Server ๊ตฌ์ถ
์ด๋ฒ ๋ณธ์ ์ ์๋์ง๋ง, ๋ง์ฝ์ ์๋ฆฝ ๋ฐฉ๋ฒ์ ์จ ๋ก๋๋ค.
๋ค์์ yaml ํ์ผ์ ์ค๋นํ๊ณ docker-compose up -d๋ก PlantUML Server๋ฅผ ์์ํฉ๋๋ค.
docker-compose.yaml
version: "3.7"
services:
plantuml:
image: plantuml/plantuml-server
ports:
- 18080:8080
์๋ฒ๊ฐ ๊ธฐ๋ํด ๋ธ๋ผ์ฐ์ ๋ก ์ก์ธ์ค ํด, ์ดํ์ ๊ฐ์ ํ์ด์ง๊ฐ ํ์๋๋ฉด OK์ ๋๋ค.
์ฌ๊ธฐ์, ์๋ฒ์ IP ์ฃผ์๋ 192.168.1.100 ์ผ๋ก ํ๊ณ , ํ์ด์ง๋ http://192.168.1.100:18080 ๋ก ์ก์ธ์ค ํ ์ ์๋ ๊ฒ์ผ๋ก ํด ์ค๋ช ์ ๊ณ์ํฉ๋๋ค.

MkDocs ์ปจํ ์ด๋ ํ๊ฒฝ ๋ง๋ค๊ธฐ
MkDocs ์ฉ ์ปจํ ์ด๋์ Dockerfile์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ณต์ ํ์ด์ฌ docker ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ๋ ํจํค์ง๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ด๋ฒ์๋ MkDocs๋ฅผ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ ํ ๋ง์ PlantUML์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋จธ๋ฌผ๋ฌ ์์ต๋๋ค.
Dockerfile
FROM python:3-buster
WORKDIR /
RUN pip install -U \
pip \
mkdocs \
mkdocs-material \
plantuml-markdown \
&& mkdocs new docroot
WORKDIR /docroot
๊ทธ๋ฐ ๋ค์ docker-compose.yaml์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
docroot ์ ๋๋ ํ ๋ฆฌ๋ mkdocs new ๋ก ์์ฑํ MkDocs ์ ํ๋ก์ ํธ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ก์ปฌ์ ๋ณด๊ด ์ ์งํด ๋ง์ดํธ ํ๋๋ก ํ๊ณ ์์ต๋๋ค.
์ปจํ ์ด๋๋ฅผ ๊ธฐ๋ํ๋ฉด mkdocs serve ๋ก ์๋ฒ๊ฐ ๊ธฐ๋ํ๋๋ก ํ๊ณ ์์ต๋๋ค.
http://192.168.1.100:18000 ๋ก ์ด๋ํ๋ฉด ํ์ด์ง๊ฐ ํ์๋ฉ๋๋ค.
๋จ์ํ mkdocs serve ๋ฟ์ด๋ผ๋ฉด localhost:8000 ์์ listen ํ๋ฏ๋ก ์ปจํ ์ด๋ ๋ฐ์์ ์ก์ธ์ค ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ปจํ ์ด๋ ์ธ๋ถ์์ ์ก์ธ์ค ํ ์ ์๋๋ก -a ์ต์ ์ ์ถ๊ฐํ์ต๋๋ค.
docker-compose.yaml
version: "3.7"
services:
mkdocs:
build:
context: ./
dockerfile: ./Dockerfile
volumes:
- ./docroot:/docroot
ports:
- 18000:8000
tty: true
command: bash -c "mkdocs serve -a 0.0.0.0:8000"
PlantUML๊ณผ ํ๋ ฅ
PlantUML๊ณผ ํจ๊ป ์๋ํ๋ ค๋ฉด ๋ค์ ์ค๋น๊ฐ ํ์ํฉ๋๋ค.
plantuml-markdown์ ์ค์น๋ Dockerfile์์ ์ด๋ฏธ ์๋ฃ๋์์ผ๋ฏ๋ก ์๋ตํฉ๋๋ค.
plantuml_markdown์ ํ์ฅ ์ถ๊ฐ
mkdocs.yml์ ๋ค์์ ์ถ๊ฐํฉ๋๋ค.
์ด์ ์ด๋ผ๋ฉด, server๋ก ์ค์ ํ๋ ๊ฒ์ด htp // 192.168.1.100:18080 ์ ๊ฐ์ด ๋ง์ง๋ง์ ใplantumlใ์ด ๋ถ์ด ์์ ํ์๊ฐ ์์์ต๋๋ค.
PlantUML Server์ ์ฌ์์ด ๋ฐ๋์๋์ง ์ด๋๋ก ์์ง์ด์ง ์๊ณ ์์ ์ ๋ง์ค์ด๊ณ ์์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ , ๊ฐ์ธ์ ์ผ๋ก ๋ค์ด์ด๊ทธ๋จ์ svg ๋ก ํ์ํ๊ณ ์ถ๊ธฐ ๋๋ฌธ์, ์ด์ ์๋ htp // 192.168.1.100:18080 ์ ๊ฐ์ด URL์ svg ๋ฅผ ์ถ๊ฐํ๊ณ ์๋ ์๊ฐ์ด์๋๋ฐ exception ํฌ์ฑ์ด๋ก ํ์๋์ง ์๊ณ , ํ ์ด ๋์ด ์์์ต๋๋ค.
์ด ๋ณ๋ ์ฌ์์ด ๋ฐ๋์๋์ง ํนํ ์๋ฌด๊ฒ๋ ์ถ๊ธฐํ ํ์๋ ์๊ณ , http://192.168.1.100:18080 ๋ง์ ์ง์ ํฉ๋๋ค.
์ฃผ์์ ์ผ๋ก์๋, ๋ง์ง๋ง ์ฌ๋์๋ ๋ถํ์ํฉ๋๋ค.
site_name: My Docs
theme:
name: material
+ markdown_extensions:
+ - plantuml_markdown:
+ server: http://192.168.1.100:18080
ํ์ ์ง์ ์ด ์์ผ๋ฉด ๊ธฐ๋ณธ png์ ๊ฐ์ต๋๋ค.
์์ ์ฒ๋ผ ๊ธฐ๋ณธ๊ฐ์ svg๋ก ๋ง๋ค๋ ค๋ฉด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํ์์ ๋งค๋ฒ ์ง์ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด "format"๋ก ์ง์ ํฉ๋๋ค.
```plantuml format="svg"
@startuml
Bob -> Alice : hello
@enduml
```
๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ ํ๋ ค๋ฉด mkdocs.yml์์ ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํฉ๋๋ค.
site_name: My Docs
theme:
name: material
markdown_extensions:
- plantuml_markdown:
server: http://192.168.1.100:18080
+ format: svg
์ด์์ผ๋ก, ์๋ง ํ์์ ์์์ ์ต์ ์ MkDocs ์ PlantUML ๋ฅผ ์ฌ์ฉํ ํ๊ฒฝ์์ ๋ฌธ์๋ฅผ ์์ฑํ ์ ์์๊น ์๊ฐํฉ๋๋ค.
๊ธธ์ด์ก์ง๋ง ์ฌ๊ธฐ๊น์ง ์ฌ๊ท์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(MkDocs์์ PlantUML ํ์), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://qiita.com/shun_xx/items/1a2e182a15fb7cf79663ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค