![](/img/trans.png)
[英]docker-compose exec causes [Errno 2] No such file or directory: 'docker-compose': 'docker-compose' in docker container
[英]Docker-Compose Configuring Container Timezone
我有一个在docker中运行的python应用程序。 在应用程序中,我使用的是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
时区进行更改时,时区是我想要的。
我想念什么?
谢谢和最好的问候。
您需要在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
我解决了问题。 实际上,我检查了/ usr / share / zoneinfo文件夹是否存在。 我看到那不存在。 因此,缺少Tzdata软件包。 我在Dockerfile apt-get install tzdata -y
添加了一行,并解决了我的问题。
更新/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
最好的祝福!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.