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使用pip安装boto3库,设置了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创建一个容器,脚本每分钟运行一次并上传文件。但是我无法在主机和容器之间同步文件内容。无论我对S3存储桶中的文件boo.txt进行什么更改,都不会反映出来。

我不确定我要去哪里哪里,bind mount是否应该跟踪文件内容

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)