Docker-Compose Настройка контейнера Часовой пояс - PullRequest
0 голосов
/ 01 марта 2019

У меня есть приложение на Python, которое запускается в Docker.В приложении я использую функцию datetime.now (), и эта функция принимает значение из часового пояса контейнера.Поэтому я должен настроить часовой пояс контейнера.

Моя структура каталогов:

- myapp (project folder)
- DockerFile
- docker-compose.yml
- requirement.txt
- run.py

Мой Dockerfile:

FROM ubuntu:latest

ENV TZ=Europe/Istanbul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential

COPY . /app
ENV HOME=/app
WORKDIR /app

RUN pip install -r requirements.txt

ENV LOGIN_USERNAME=master_login_username
ENV LOGIN_PASSWORD=master_login_password

ENV SLAVE_LOGIN_USERNAME=slave_login_username
ENV SLAVE_LOGIN_PASSWORD=slave_login_password

ENV AWS_ACCESS_KEY_ID=....
ENV AWS_SECRET_ACCESS_KEY=....
ENV CLUSTER_NAME=....

EXPOSE 5000

ENTRYPOINT ["gunicorn","-b","0.0.0.0:5000","-w","1","myapp:create_app()","--access-logfile","/app/myapp/logs/access.log","--error-logfile","/app/myapp/logs/error.log","--timeout","90"]

Мой docker-compose.yml:

version: '3.5'
services:
  master:
    build: .
    ports:
      - "5000:5000"
    container_name: master
    environment:
      - MONGO_URI=mongodb://mongodb:27017/master
  mongodb:
    image: mongo:latest
    container_name: "mongodb"
    environment:
      - MONGO_DATA_DIR=/usr/data/db
      - MONGO_LOG_DIR=/dev/null
    ports:
      - 27017:27017
    command: mongod --smallfiles --logpath=/dev/null # --quiet
networks:
  default:
    name: master

Итак, на самом деле в Dockerfile я настраиваю часовой пояс.Но я строю с docker-compose up --build и часовой пояс контейнера не меняется.

Когда я строю без компоновки как docker build -t и запускаю с docker run --name slave -d -p 80:5000 часовой пояс меняется так, как я хочу.

Что мне не хватает?

Спасибо и всего наилучшего ..

Ответы [ 3 ]

0 голосов
/ 01 марта 2019

Я решил проблему.На самом деле, я проверил / usr / share / zoneinfo папка существует.И я увидел, что не существует.Итак, пакет Tzdata отсутствует.Я добавил строку в Dockerfile apt-get install tzdata -y и решил мою проблему.

0 голосов
/ 10 мая 2019

Обновление /etc/timezone - это обычный способ, но, по крайней мере, в моем случае мне пришлось сделать что-то еще: создать ссылку из нужного часового пояса на etc/localtime и перенастроить tzdata (сначала установите ее, еслиу вас его нет):

# Set TimeZone to Spain (mainland)
ENV TZ=Europe/Madrid
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && dpkg-reconfigure -f noninteractive tzdata

С уважением!

0 голосов
/ 01 марта 2019

Вам нужно установить переменную окружения в docker-compose

version: '3.5'
services:
  master:
    build: .
    environment:
      - "TZ=Europe/Istanbul" 
    ports:
      - "5000:5000"
    container_name: master
    environment:
      - MONGO_URI=mongodb://mongodb:27017/master
  mongodb:
    image: mongo:latest
    container_name: "mongodb"
    environment:
      - MONGO_DATA_DIR=/usr/data/db
      - MONGO_LOG_DIR=/dev/null
    ports:
      - 27017:27017
    command: mongod --smallfiles --logpath=/dev/null # --quiet
networks:
  default:
    name: master
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...