thi*_*ing 5 python docker dockerfile
我的Dockerfile是:
FROM gliderlabs/alpine:3.3
RUN set -x \
&& buildDeps='\
python-dev \
py-pip \
build-base \
' \
&& apk --update add python py-lxml py-mysqldb $buildDeps \
&& rm -rf /var/cache/apk/* \
&& mkdir -p /app
ENV INSTALL_PATH /app
ENV TZ=Asia/Shanghai
WORKDIR $INSTALL_PATH
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY requirements-docker.txt ./
RUN pip install -r requirements-docker.txt
COPY . .
RUN apk del --purge $buildDeps
ENTRYPOINT ["celery", "-A", "tasks", "worker", "-l", "info", "-B"]
Run Code Online (Sandbox Code Playgroud)
我将时区设置为Asia/Shanghai,但它不起作用,并给了我有8小时偏差的UTC,结果是:
2016-01-24 11:25:07:[2016-01-24 03:25:07,893: WARNING/Worker-2] 2016-01-24 03:25:07.892718
2016-01-24 11:25:08:[2016-01-24 03:25:08,339: INFO/MainProcess] Task tasks.crawl[98c9a9fc-0817-45cb-a2fc-40320d63c41a] succeeded in 0.447403368002s: None
2016-01-24 11:27:07:[2016-01-24 03:27:07,884: INFO/Beat] Scheduler: Sending due task spider (tasks.crawl)
Run Code Online (Sandbox Code Playgroud)
然后我尝试了其他方法,例如:
RUN echo "Asia/Shanghai" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata
Run Code Online (Sandbox Code Playgroud)
和
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
Run Code Online (Sandbox Code Playgroud)
他们都没有工作,如何设置时区?非常感谢。
//码头文件
RUN apk update && apk add tzdata \
&& cp -r -f /usr/share/zoneinfo/YOUR_TIMEZONE /etc/localtime
Run Code Online (Sandbox Code Playgroud)
通常的解决方法是安装/etc/localtime,如问题3359中所述
$ docker run --rm busybox date
Thu Mar 20 04:42:02 UTC 2014
$ docker run --rm -v /etc/localtime:/etc/localtime:ro busybox date
Thu Mar 20 14:42:20 EST 2014
$ FILE=$(mktemp) ; echo $FILE ; echo -e "Europe/Brussels" > $FILE ; docker run --rm -v $FILE:/etc/timezone -v /usr/share/zoneinfo/Europe/Brussels:/etc/localtime:ro busybox date
/tmp/tmp.JwL2A9c50i
Thu Mar 20 05:42:26 CET 2014
Run Code Online (Sandbox Code Playgroud)
提到相同的线程(尽管对于基于ubuntu的映像),但是您已经尝试过了。
RUN echo Europe/Berlin > /etc/timezone && dpkg-reconfigure --frontend noninteractive tzdata
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用构建自己的gliderlabs/docker-alpine图像builder/scripts/mkimage-alpine.bash。
该脚本允许您设置时区。
[[ "$TIMEZONE" ]] && \
cp "/usr/share/zoneinfo/$TIMEZONE" "$rootfs/etc/localtime"
Run Code Online (Sandbox Code Playgroud)
您可以看到Digital Ocean:Alpine Linux中使用的图像构建器脚本:
生成Alpine根文件系统
下载并解压缩gliderlabs/docker-alpine。
wget -O docker-alpine-master.zip https://github.com/gliderlabs/docker-alpine/archive/master.zip
unzip docker-alpine-master.zip
Run Code Online (Sandbox Code Playgroud)生成构建器(首先导出正确的时区)。
export TIMEZONE=xxx
docker build -t docker-alpine-builder docker-alpine-master/builder/
Run Code Online (Sandbox Code Playgroud)构建根文件系统(将v3.3更改为要构建的Alpine版本)。
docker run --name alpine-builder docker-alpine-builder -r v3.4
Run Code Online (Sandbox Code Playgroud)从容器复制根文件系统。
docker cp alpine-builder:/rootfs.tar.gz .
Run Code Online (Sandbox Code Playgroud)一旦拥有了rootfs.tar.gz自己的文件系统,便可以使用它(如此处所述)和以下Dockerfile来构建自己的Alpine映像:
FROM SCRATCH
ADD rootfs.tar.gz /
Run Code Online (Sandbox Code Playgroud)
构建完成后,您可以在正确的时区使用该Alpine图像。
| 归档时间: |
|
| 查看次数: |
5830 次 |
| 最近记录: |