본문 바로가기

리눅스

[draft] 도커 컨테이너와 도커 컴포즈에서 타임존을 설정하는 방법

728x90

도커 컨테이너와 도커 컴포즈에서 타임존을 설정하는 방법

도커 컨테이너에서 타임존 설정

1. Dockerfile에서 타임존 설정

  • Dockerfile을 작성할 때 타임존을 설정할 수 있습니다.

예를 들어 Asia/Seoul로 설정하는 방법은 다음과 같습니다.

vim Dockerfile
FROM ubuntu:22.04

# Set the environment variable for timezone
ENV TZ=Asia/Seoul

# Install tzdata package and set timezone
RUN apt-get update && apt-get install -y tzdata && \
    ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \
    dpkg-reconfigure --frontend noninteractive tzdata

# Your other Dockerfile commands go here

이렇게 설정한 Dockerfile로 이미지를 빌드하고 컨테이너를 생성하면 해당 컨테이너는 설정한 타임존을 사용하게 됩니다.

 

2. 컨테이너 실행 시 타임존 설정

  • 컨테이너를 실행할 때 환경 변수를 사용하여 타임존을 설정할 수 있습니다.

예를 들어 ubuntu 이미지를 사용하여 타임존을 Asia/Seoul로 설정하는 방법은 다음과 같습니다.

docker run \
  -e TZ=Asia/Seoul \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro ubuntu:22.04

이 명령어는 컨테이너의 타임존을 Asia/Seoul로 설정하고 호스트 시스템의 타임존 설정을 컨테이너에 반영합니다.

도커 컴포즈에서 타임존 설정

Docker Compose를 사용하여 타임존을 설정할 때는 docker-compose.yml 파일에서 환경 변수를 설정하거나 볼륨을 마운트할 수 있습니다.

 

1. docker-compose.yml 파일에서 환경 변수 설정

docker-compose.yml 파일을 작성할 때 환경 변수를 설정하여 타임존을 지정할 수 있습니다.

vim docker-compose.yml
version: '3.8'

services:
  my_service:
    image: ubuntu:22.04
    environment:
      - TZ=Asia/Seoul
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    command: [ "sleep", "infinity" ]  # Replace with your actual command

이 설정은 TZ 환경 변수를 사용하여 컨테이너의 타임존을 Asia/Seoul로 설정하고 호스트 시스템의 타임존 설정을 컨테이너에 반영합니다.

 

2. Dockerfile과 연동하여 설정

docker-compose.yml 파일과 Dockerfile을 함께 사용하여 타임존을 설정할 수도 있습니다. Dockerfile에서 타임존을 설정하고 docker-compose.yml 파일에서 해당 이미지를 사용하도록 구성합니다.

vim Dockerfile
FROM ubuntu:22.04

# Set the environment variable for timezone
ENV TZ=Asia/Seoul

# Install tzdata package and set timezone
RUN apt-get update && apt-get install -y tzdata && \
    ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \
    dpkg-reconfigure --frontend noninteractive tzdata

# Your other Dockerfile commands go here
vim docker-compose.yml
version: '3.8'

services:
  my_service:
    build: .
    environment:
      - TZ=Asia/Seoul
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    command: [ "sleep", "infinity" ]  # Replace with your actual command

 

이러한 방법들을 통해 도커 컨테이너와 도커 컴포즈에서 타임존을 설정할 수 있습니다.

 

728x90