윈도우 도커 환경에서 시작하기
사전 준비
윈도우 환경에 Docker가 설치되어 있어야 합니다.
이 문서에서는 Docker Desktop을 설치한 PC에서 테스트 하였습니다.
아래 설정 내용은 HTTP 설정 내용으로 서비스의 직접적인 외부 네트워크 연결을 권장 드리지 않습니다.
아래 기술된 Command 들은 PowerShell 기준입니다.
시작하기
1. 폴더 지정
도커 환경 설정 파일을 저장할 폴더와 데이터 저장 폴더를 정하고 생성해둡니다.
이 문서에서는 아래 경로를 기준으로 진행합니다.
C:\namoo-bookself
C:\namoo-bookself\data
2. 폴더 생성 및 권한 설정
C:\namoo-bookself\data 폴더에 namoo-bookself에서 사용하는 폴더를 생성합니다.
C:\namoo-bookself\data
├── postgres/
├── Files/
├── Log/
├── License/
└── UserConfig/
$DATA = "C:\namoo-bookself\data"
New-Item -ItemType Directory -Force -Path `
"$DATA\postgres", "$DATA\Files", "$DATA\Log", "$DATA\License", "$DATA\UserConfig"
3. docker-compose.yml 파일 생성
C:\namoo-bookself 폴더에 docker-compose.yml 파일을 생성하고 아래의 내용을 붙여 넣습니다.
필요에 따라 restart 옵션은 변경하시면 됩니다.
docker-compose.yml
services:
postgres:
image: postgres:16
container_name: namoo-postgres
restart: unless-stopped
environment:
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: ${DB_NAME}
volumes:
- ${DATA_PATH}/postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]
interval: 5s
timeout: 3s
retries: 20
app:
image: ${DOCKER_IMAGE}
pull_policy: always
container_name: namoo-bookself
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
ports:
- "${SERVER_HTTP_PORT:-8080}:${SERVER_HTTP_PORT:-8080}"
environment:
DOTNET_ENVIRONMENT: Docker
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
APP_USER_ID: ${APP_USER_ID:-bookself}
DB_HOST: ${DB_HOST}
DB_PORT: ${DB_PORT}
DB_NAME: ${DB_NAME}
Server__SERVER_URL: "+"
Server__SERVER_HTTP_PORT: ${SERVER_HTTP_PORT}
LOG_FILE_ENABLED: ${LOG_FILE_ENABLED:-N}
volumes:
- ${DATA_PATH}/Files:/app/Files
- ${DATA_PATH}/Log:/app/Log
- ${DATA_PATH}/License:/app/License
- ${DATA_PATH}/UserConfig:/app/Config/User
4. .env 파일 생성
위에서 생성한 docker-compose.yml 파일에 매핑될 값들을 설정하는 .env 파일을 생성합니다.
아래 내용에서 필요한 부분은 수정하셔서 작성 하시면 됩니다.
- DOCKER_IMAGE: namoo-bookself의 이미지 정보입니다. 기본값 유지 추천.
- DB_HOST: postgresql 컨테이너 host 정보. 기본값 유지 추천.
- DB_PORT: postgresql 컨테이너 port 정보. 기본값 유지 추천.
- DB_NAME: 데이터 저장을 위한 database 이름.
- DB_USER: 데이터 베이스 사용자 ID
- DB_PASSWORD: 데이터 베이스 사용자 비밀번호
- DATA_PATH: 데이터 저장 경로. 현재 문서 기준
C:\namoo-bookself\data - SERVER_HTTP_PORT: 서비스 접근을 위한 http port
- APP_USER_ID: namoo-bookself 서비스에서 사용할 사용자 ID. 로그인에 사용하는 ID.
- LOG_FILE_ENABLED: 로그 출력 여부 Flag. 기본값 유지 추천.
.env
DOCKER_IMAGE=gsr17gil/namoo-bookself:latest
DB_HOST=postgres
DB_PORT=5432
DB_NAME=bookself
DB_USER=변경
DB_PASSWORD=변경
DATA_PATH=변경
SERVER_HTTP_PORT=변경
APP_USER_ID=변경
LOG_FILE_ENABLED=N
5. 서비스 포트 방화벽 등록
방화벽을 사용 중이시라면, 서비스 포트를 허용하셔야 합니다.
env 파일 생성 시 설정한 SERVER_HTTP_PORT 값을 기준으로 방화벽 허용 등록을 합니다.
6. 실행 전 확인
- 실행 전 구성되어야 하는 폴더 구조는 아래와 같습니다.
C:\namoo-bookself
├── docker-compose.yml
├── .env
C:\namoo-bookself\data
├── postgres/
├── Files/
├── Log/
├── License/
└── UserConfig/
- 방화벽이 설정되어 있는지, 설정되어 있다면 설정한 포트가 오픈 되어 있는지 확인합니다.
7. 실행
docker-compose.yml 파일이 있는 폴더로 이동하여 아래 명령어를 실행합니다.
# 이미지 받기
docker compose pull
# 컨테이너 기동
docker compose up -d
# 상태 확인
docker compose ps
docker compose logs -f app
8. 실행 로그 확인
실행 로그 확인 시 아래와 같이 라이선스 Error 로그 외 다른 에러 로그가 없고, Start server 로그가 남아 있다면 정상 실행된 것입니다.

9. 웹 UI 확인
http://<도커호스트IP>:<SERVER_HTTP_PORT> 로 접속 시 로그인 화면이 뜨고, 로그인에 성공한다면 서버가 기동 된 것입니다.
로그인 ID / 비밀번호는 env 파일에서 설정한 APP_USER_ID 값입니다.
(초기 비밀번호는 APP_USER_ID와 동일)
로그인이 정상적으로 성공하면 아래와 같은 화면이 보여집니다.
