簡體   English   中英

docker-compose:容器時區

[英]docker-compose: container timezone

我正在使用Docker Compose在我的開發環境中運行我的堆棧,但是我遇到了一個問題,即容器中的時區比我自己的時區晚了一個小時,破壞了關鍵任務,使開發變得非常困難。

我認為這將是一個普遍的問題,因此我進行了廣泛搜索,但是我發現的僅有的兩個解決方案不起作用(不起作用:無效)。

我已經嘗試了兩件事:

嘗試1-從主機符號鏈接卷
通過嘗試將/etc/timezone/etc/localtime掛載為ro -volumes,我希望該容器與主機具有相同的時區。 沒有效果。

嘗試2-在command設置變量
Dockerfile讓Docker Compose使用我在ENTRYPOINT指定的Dockerfile ,而是在Dockerfile docker-compose.yml -file中設置了command ,因此:

environment:
    - APPLICATION_ENV=dev-docker
    - TZ=Europe/Stockholm
build: ../../core/document
command: >
  sh -c "ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &&
  echo $TZ > /etc/timezone &&
  exec /go/bin/documents"

同樣,完全沒有效果。

是否沒有在Docker容器中設置時區的官方方法? 我覺得這應該是比我更多的用戶的關鍵問題。

謝謝。

編輯 :根據dockerfile來自core/documents dockerfile

# This file is intended for use with the GitLab CI tool where the binary has already been built.
FROM golang:1.9.2

# The binary is built and downloaded to the current directory by GitLab CI.
COPY ./documents /go/bin

# Run the program.
ENTRYPOINT /go/bin/documents

我在時區方面也遇到了問題,這對我來說很有效:

environment:
  - TZ=Europe/Stockholm

我看到我從來沒有正確回答這個問題。 我確實找到了解決方案。

TL; DR:
Alpine僅檢查/usr/share/zoneinfo/Europe/Stockholm文件,而不檢查/etc/localtime文件。

更長的答案
基本上,缺少的步驟是Alpine不檢查/etc/localtime -path-它僅檢查/usr/share/zoneinfo/Europe/Stockholm -path(更改為您的時區)。

就我而言,我決定采用一種可以說是非傳統的解決方案。 我想:

  • 只復制我真正想要的時區,因為tzdata包的大小是容器其余部分的兩倍; 基本圖像和二進制
  • 運行適當的apk tel tzdata -command並不要以某種奇怪的rm -way方式清理自己。
  • 不要使tzdata軟件包與其他文件雜亂無章,也不要手動將內容寫入其中(除了符號鏈接)

因此,我決定安裝tzdata ,將我想要的時區復制到/etc/localtime ,然后為Alpine創建一個符號鏈接以仍然讀取該文件。

我的Dockerfile有以下Dockerfile

RUN \
    apk --update add curl bash nano tzdata && \
    cp /usr/share/zoneinfo/Europe/Stockholm /etc/localtime && \
    echo "Europe/Stockholm" > /etc/timezone && \
    apk del tzdata && \
    rm -r /var/cache/apk/* && \
    mkdir -p /usr/share/zoneinfo/Europe && \
    ln -s /etc/localtime /usr/share/zoneinfo/Europe/Stockholm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM