서버에서 수행한 작업의 시간을 저장해야하는 작업이 있는데,
우분투 서버의 시간을 변경해주어도 해결되지 않았습니다.
원인을 찾아보니,
서버의 시간과 도커 컨테이너의 시간도 또 별개였습니다.
즉, 도커 컨테이너의 timezone 설정을 해야했습니다.
저는 docker-compose를 이용하여 컨테이너를 구축해서,
docker-compose 설정 파일에서 이를 설정했습니다.
도커 컨테이너 각각의 environment 속성에
- TZ=Asia/Seoul
또는 TZ: "Asia/Seoul"
을 추가로 작성해줍니다.
# docker-compose.yml
...
nginx:
container_name: nginx
build: ./config/nginx
environment:
TZ: "Asia/Seoul" # timezone 설정 부분
...
저는 띄운 모든 컨테이너 각각의 timezone을 Asia/Seoul로 바꾸었습니다.
docker-compose에서 timezone 세팅만 했다고 끝이 아닙니다!
Dockerfile에서 추가로 작성해주어야 할 부분이 있습니다.
RUN apk add tzdata
위의 명령어를 꼭 같이 Dockerfile에 넣어야,
docker-compose에서 설정한 timezone이 반영이 됩니다!
ubuntu@ip-172-31-45-97:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
338e5edabef5 ubuntu_celery_beat "sh -c 'celery -A dn…" 3 hours ago Up 3 hours celery_beat
81a257231d4b ubuntu_celery_worker "sh -c 'celery -A dn…" 3 hours ago Up 3 hours celery_worker
02bb2eb93254 ubuntu_web "sh config/docker/en…" 3 hours ago Up 3 hours 8000/tcp web
bb4afa623c7a rabbitmq:3.7-alpine "docker-entrypoint.s…" 12 hours ago Up 12 hours 4369/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 5671/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp rabbitmq
b1134268ed4b ubuntu_nginx "/docker-entrypoint.…" 12 hours ago Up 12 hours 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
ubuntu@ip-172-31-45-97:~$ docker exec -it 02 /bin/sh
~/web $ date
Sat Aug 13 12:32:16 KST 2022
~/web $ exit
ubuntu@ip-172-31-45-97:~$ docker exec -it b1 /bin/sh
/ # date
Sat Aug 13 12:32:38 KST 2022
/ # exit
ubuntu@ip-172-31-45-97:~$ docker exec -it 81 /bin/sh
~/web $ date
Sat Aug 13 12:34:07 KST 2022
~/web $ exit
ubuntu@ip-172-31-45-97:~$ docker exec -it 33 /bin/sh
~/web $ date
Sat Aug 13 12:34:18 KST 2022
timezone 세팅이 잘 되었음을 확인할 수 있습니다🙆🏻♀️
좋은 글 감사합니다!