# EGBIM 로컬 Docker 실행 ## 구성 - `app`: Apache + PHP 8.1 - `db`: MariaDB 10.6 - 웹 루트: 저장소 루트 `/var/www/html` - 기본 진입 주소: `http://localhost:8088/egbim/` ## 준비 1. Docker 와 Docker Compose 를 사용할 수 있어야 한다. 2. 필요하면 `.env.docker.example` 내용을 참고해 `.env` 파일을 만든다. 3. DB 덤프가 있으면 `docker/mysql/init/` 아래에 `.sql` 파일로 넣는다. 4. 기본 로컬 DB명은 운영과 맞춘 `egbim` 이다. 5. BARON-SSO 를 로컬에서 테스트하려면 BARON 앱 설정에 로컬 Redirect URI 를 추가해야 한다. ## 실행 ```bash docker compose up --build ``` ## BARON-SSO 로컬 테스트 설정 `.env` 에 아래 값을 채운다. ```dotenv BARON_SSO_CLIENT_ID= BARON_SSO_CLIENT_SECRET= BARON_SSO_AUTHORIZE_ENDPOINT=https://app.brsw.kr/oidc/oauth2/auth BARON_SSO_TOKEN_ENDPOINT=https://app.brsw.kr/oidc/oauth2/token BARON_SSO_USERINFO_ENDPOINT=https://app.brsw.kr/oidc/userinfo BARON_SSO_ISSUER=https://app.brsw.kr/oidc BARON_SSO_REDIRECT_URI=http://localhost:8088/auth/callback BARON_SSO_SCOPE=openid profile email tenants BARON_SSO_CLIENT_AUTH_METHOD=basic ``` `BARON_SSO_CLIENT_AUTH_METHOD` 는 우선 `basic` 으로 두고, 토큰 엔드포인트가 `invalid_client` 를 반환하면 `post` 로 바꿔 다시 확인한다. BARON 관리자 화면의 Redirect URI 허용 목록에도 아래 중 하나를 추가한다. ```text http://localhost:8088/auth/callback http://eg-bim.com:8088/auth/callback ``` 운영에 등록된 `https://eg-bim.com/auth/callback` 만 허용되어 있으면 로컬 callback 은 실패한다. ## 로컬 확인 순서 1. `docker compose up --build -d` 2. `docker compose ps` 로 `app`, `db` 상태 확인 3. 브라우저에서 `http://localhost:8088/egbim/` 접속 4. 로그인 팝업에서 `사내 사용자 로그인` 버튼 클릭 5. BARON 로그인 후 `http://localhost:8088/auth/callback` 로 복귀하는지 확인 6. 복귀 후 `http://localhost:8088/egbim/bbs/descope_qa_list.php` 로 이동하는지 확인 ## 빠른 점검 URL - BARON 시작점: `http://localhost:8088/auth/baron_login?site=egbim&return_url=/egbim/bbs/descope_qa_list.php` - BARON 콜백: `http://localhost:8088/auth/callback` - 국문 Q&A: `http://localhost:8088/egbim/bbs/descope_qa_list.php` - 영문 Q&A: `http://localhost:8088/eng/bbs/descope_qa_list.php` ## 문제 발생 시 먼저 볼 항목 - Redirect URI 가 BARON 허용 목록과 정확히 일치하는지 확인 - `.env` 값이 비어 있지 않은지 확인 - 컨테이너 재기동 전에 `.env` 변경분이 반영되었는지 확인 - callback 경로가 `/auth/callback` 으로 등록되어 있는지 확인 - 브라우저 개발자도구 Network 에서 token endpoint 호출 전 redirect 단계가 정상인지 확인 ## 접속 - 기본: `http://localhost:8080/egbim/` - 기본: `http://localhost:8088/egbim/` - 루트 진입 확인: `http://localhost:8088/` ## `eg-bim.com` 도메인으로 로컬 접속하고 싶을 때 hosts 파일에 아래를 추가한다. ```text 127.0.0.1 eg-bim.com ``` 그 다음 아래 주소로 접속한다. ```text http://eg-bim.com:8088/ ``` 로컬 Docker 환경에서는 루트 `.htaccess` 가 `APP_ENV=local` 일 때 HTTPS 강제와 운영 리다이렉트를 건너뛴다. ## 참고 - 앱 컨테이너에서는 DB 호스트를 `db` 로 주입하므로 `egbim/data/dbconfig.php`, `eng/data/dbconfig.php` 는 환경변수가 있으면 그 값을 우선 사용한다. - Docker 기본값은 `G5_MYSQL_DB=egbim`, `G5_MYSQL_USER=egbim` 이다. - 현재 일부 개별 PHP 스크립트는 여전히 `new mysqli('localhost', ...)` 형태의 하드코딩이 남아 있다. 로그인과 기본 그누보드 흐름은 `data/dbconfig.php` 경유라 우선 Docker 부팅에는 문제가 없지만, 업로드/버전 관리 기능은 다음 단계에서 별도 정리가 필요하다.