python - docker-compose 将主机上的文件内容更改同步到安装在 docker 容器上的卷
问题描述
我有一个脚本,每分钟使用 crontab 将文件上传到 S3 存储桶。我正在使用 docker 运行脚本,我需要对主机上的文件所做的更改反映在 docker 容器上并上传到 S3 存储桶。
脚本/data/boo.txt
每分钟上传到 S3。
import boto3
s3 = boto3.client('s3')
s3_bucket_name = 'ap-rewenables-feature-data'
with open("/data/boo.txt", "rb") as f:
s3.upload_fileobj(f, s3_bucket_name, "boo.txt")
我的Dockerfile
安装boto3
库使用 pip,设置 aws 凭据并用于crond
按预定时间间隔运行脚本。
FROM python:3.7-alpine
WORKDIR /scripts
RUN pip install boto3
ENV AWS_ACCESS_KEY_ID=#########
ENV AWS_SECRET_ACCESS_KEY=##########
COPY s3-file-upload-crontab /etc/crontabs/root
RUN chmod 644 /etc/crontabs/root
COPY s3_operations.py /scripts/s3_operations.py
RUN chmod +x /scripts/s3_operations.py
ENTRYPOINT crond -f
*/1 * * * * python /scripts/s3_operations.py
据我所知,我必须使用它bind mount
来保持主机和容器之间的目录同步。我docker-compose.yml
用来定义服务和bind mount
.
version: "3.8"
services:
data-transfer:
image: ap-aws-s3-file-upload
build:
context: ./
volumes:
- ./data:/data
运行docker-compose up
创建容器,脚本每分钟运行一次并上传文件。但是我无法在主机和容器之间同步文件内容。无论我boo.txt
对 S3 存储桶中的文件进行什么更改都不会反映它们。
我不确定哪里出错了,不应该bind mount
跟踪文件内容吗?
提前致谢。
解决方案
推荐阅读
- javascript - 使用 lodash 过滤数组 WithIn Array
- elasticsearch - ElasticSearch 可以选择不为空或不为空的包含字段之一吗?
- c# - 当在长多表查询中无法直接计数时,有什么方法可以在有子句中使用 COUNT 变量
- java - 在 maven 上运行时的 OutOfMemory Java 堆空间,即使内存已增加
- python - python中追加数据框中的列顺序不正确
- c# - 在 UnitTest 中处理调度程序计时器
- java - Redis如何将值存储为json
- angular - 重新初始化组件时,AGM 是否保留 Google Map 的会话?
- amazon-web-services - 无需更改客户端代码即可轮换 IAM 用户访问密钥
- javascript - 如何更改 Ant Design 卡片组件的标题字体?