docker: Alpine настроить часовой пояс и время

Контейнеры docker на базе легковесного Linux Alpine используют часовой пояс UTC по умолчанию, для того, что-бы это исправить необходимо выполнить 2 шага.

  1. При запуске, передать контейнеру переменную окружения -e TZ="Europe/Kiev" (в вашем случае ваш часовой пояс). Строка запуска будет выглядеть примерно следующим образом
    docker run --name containername -d \
          -e TZ="Europe/Kiev" \
          nginx:alpine

    Но это сработает только в том случае, если в образе уже установлен пакет tzdata, например в nginx образе это так.

  2. Если вы собираете свой образ на основе чистого alpine:latest — вам нужно установить tzdata в ваш образ, ниже пример Dockerfile
    FROM alpine:latest
    
    RUN apk update && \
        apk add --no-cache tzdata
    
    ENTRYPOINT ["date"]
    

    Ниже я привожу пример своего Dockerfile, в котором собирается моё flask приложение, устанавливаются зависимости (в том числе tzdata), таким образом, что-бы образ не сильно вырос в размере.

    FROM python:3.7-alpine
    
    WORKDIR /home/app
    COPY app app
    COPY migrations migrations
    COPY config.py requirements.txt run.py run.sh ./
    
    RUN python -m venv venv
    
    RUN apk update && \
        apk add --no-cache --virtual build-deps gcc python3-dev musl-dev postgresql-dev && \
        apk add --no-cache postgresql-dev tzdata && \
        venv/bin/pip install --no-cache-dir psycopg2-binary gunicorn && \
        apk del --no-cache build-deps
    
    RUN venv/bin/pip install -r requirements.txt
    
    
    RUN chmod +x run.sh
    ENV FLASK_APP run.py
    EXPOSE 5000
    
    ENTRYPOINT ["./run.sh"]
    

     

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *