Dav*_*ave 6 sql-server timezone docker dockerfile docker-compose
我正在使用 Docker 19。我有以下 Dockerfile。请注意我如何将时区设置为美国东部时间...
FROM microsoft/mssql-server-linux:latest
RUN apt-get update
RUN apt-get install unzip -y
RUN apt-get install tzdata
ENV TZ=America/New_York
RUN ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && dpkg-reconfigure -f noninteractive tzdata
...
Run Code Online (Sandbox Code Playgroud)
有什么方法可以创作我的文件,以便将时区设置为运行它的本地机器?我在中部时区,但在其他时区有队友。如果它有用,上面是 docker-compose 文件的一部分,大致如下所示......
version: "3.2"
services:
sql-server-db:
build: ./
container_name: sql-server-db
image: microsoft/mssql-server-linux:2017-latest
ports:
- 1433:1433
Run Code Online (Sandbox Code Playgroud)
我们中的一些人使用 Mac,但人们可能使用 Windows 或 Ubuntu。如果更容易,您可以考虑每个人都在使用 Mac。
使用 docker run 命令:
-e TZ=`ls -la /etc/localtime | cut -d/ -f8-9`
Run Code Online (Sandbox Code Playgroud)
如果您仍然想使用卷,则需要从 MAC 中的 Docker UI 共享 /etc“首选项 --> 资源 --> 文件共享”
更新
对于 docker-compose :
在构建部分使用:
args:
- TZ
Run Code Online (Sandbox Code Playgroud)
进而:
environment:
- TZ=${TZ}
Run Code Online (Sandbox Code Playgroud)
然后像重新构建后一样启动它:
export TZ=`ls -la /etc/localtime | cut -d/ -f8-9` && docker-compose up -d --build
Run Code Online (Sandbox Code Playgroud)
如果可以使用脚本来执行 docker-compose 作业,我认为解决方法可能是在 shell 变量中设置当前时区,并将其作为环境变量传递给容器。
该脚本将是:
TIMEZONE=`cat /etc/timezone`
docker-compose up -d # or whatever
Run Code Online (Sandbox Code Playgroud)
在 docker-compose 文件中,您使用此变量:
web:
environment:
- TZ=${TIMEZONE}
Run Code Online (Sandbox Code Playgroud)
注意:您不需要在构建时执行任何操作来设置时区。您可以将TZ环境变量传递给容器,容器的时区将是您想要的。
PS 我对 Mac 不熟悉,所以/etc/timezone会在不同的位置,或者 Mac 可能在预定义的环境变量本身内提供这个值。
| 归档时间: |
|
| 查看次数: |
1531 次 |
| 最近记录: |