생성된 컨테이너 환경변수 변경하기, 컨테이너 시스템 시간대 변경
prologue
(OracleDB로 테스트 중) 이건 시간대가 왜 안 맞는 걸까?
> TZ가 GMT로 되어있나 본데? 쿼리로 변경하면 해당 세션만 적용되는데..
컨테이너 생성 후에 환경 변수를 바꿀 수 없나?
> 이거 지우고 다시 생성해야 되는 거 아니야? 그럼 테스트 데이터는...?
컨테이너를 다시 생성해야 하는 줄로만 알았죠..
Oracle DB를 이용해서 개발환경을 구축해서 쓰고 있었습니다.
반복적으로 fetch 하는 쿼리에서 데이터가 추가되지 않았죠. 이상하다고 생각했어요.
AND REQUEST_TIME < SYSDATE
이 부분이 문제였어요. 입력된 시간은 제대로 입력됐는데 SYSDATE가 GMT로 찍히는 걸 확인해서..
GMT+9로 바꾸려고 했지만 이건 세션만 적용되겠죠(?)
그래서 docker에서 container로 접근해서 시스템 시간을 확인해 보니 GMT로 되어있는 걸 보니 이걸 바꿔주면 오라클의 SYSDATE도 현재시간으로 설정되지 않을까 하는 생각으로 찾았습니다.
** 환경변수는 추가할 수는 있지만 이미 생성된 데이터 영역을 변경한다면 문제가 생길 수 있습니다.
TimeZone 같은 환경변수만 추가/수정하는 걸 권장합니다.
Windows Docker에서 수정
윈도우 용에서는 기본적으로 처음 컨테이너 Run 이후에는 Environment Variables를 수정할 수 없습니다.
아래처럼 생성 후 [Inspect] 탭에서 환경변수를 확인만 할 수 있죠..
하지만 아래 부분은 분명 어딘가 Config파일이 저장되어 있을 거라고 생각했습니다.
Windows에서 Config는 [ \\docker-desktop-data\data\docker\{container-ID}\config.v2.json ]에 위치하고 있었습니다!
파일을 열어보면 [Inspect]에서 봤던 내용이.. 들어있습니다.
주의 !
컨테이너가 깨질 수 있으니 반드시 파일을 백업하고 진행하세요.
파일의 내용 중 Env Array에 TZ=Asia/Seoul을 추가했습니다.
이 부분은 Docker에서 계속 물고 있는 내용인 건지 Docker를 완전히 정지시키고 파일을 수정해야 합니다.
이후에 Oracle Container의 시간대는 전역으로 변경되었고 Oracle 내에서도 GMT+9로 변경되어 출력됨을 확인했습니다. (위 이미지는 설명을 위해서 ubuntu 기본 이미지로 작업하였습니다)
Linux Docker에서
윈도우 Docker에서와는 다르게 Ubuntu Docker에서는 어떻게 수정해야 할까..
일단 같은 파일명으로 조회해서 찾았습니다.
경로는 [ /var/lib/docker/containers/{container-ID}/config.v2.json ]이며
이곳에서도 동일하게 편집한 후 Docker/Container를 시작하면 적용됩니다.
** docker 서비스를 정지시킨 후 편집해야 합니다.
주의 !
컨테이너가 깨질 수 있으니 반드시 파일을 백업하고 진행하세요.
epilogue
도커가 너무 소모적인 시스템이라 생각 한 부분이 컨테이너 생성 후에 이런 변수들을 바꿀 수 없었기 때문이었는데..
바꾸고 나서 사용하는데 거부감이 줄었습니다.
대부분의 리눅스 이미지들에 TZ=Asia/Seoul을 넣으면 시간대가 변경되는 듯하네요.
'IT-개발' 카테고리의 다른 글
mariaDB official image 사용하기 (for docker) (0) | 2024.07.01 |
---|---|
docker - Docker 설치 (ubuntu) (1) | 2024.06.17 |
ubuntu - Ubuntu 24.04 server install (1) | 2024.06.14 |