我正在尝试建立一个非常基本的数据处理项目,其中我使用docker在EC2上创建Ubuntu环境,安装Python,获取输入的CSV文件,执行一些简单的数据操作,然后将结果输出到输入文件所在的文件夹中的一个新的CSV文件中。我已经成功地在本地运行了Python代码,也在EC2上运行过,但当我在docker容器中运行它时,数据似乎被处理了(我的脚本打印出了数据),但结果不会保存在运行结束时。是否有我在Dockerfile中缺失的命令导致结果无法保存?或者,是否有一种方式可以直接将输出保存到S3存储桶中?
编辑:输入文件的路径为”/home/ec2-user/docker_test/data”,代码的路径为”/home/ec2-user/docker_test/code”。处理数据之后,我想要将结果作为一个新文件写入主机上”/home/ec2-user/docker_test/data”目录中。
Dockerfile:
编辑:输入文件的路径为”/home/ec2-user/docker_test/data”,代码的路径为”/home/ec2-user/docker_test/code”。处理数据之后,我想要将结果作为一个新文件写入主机上”/home/ec2-user/docker_test/data”目录中。
Dockerfile:
FROM ubuntu:latest
RUN apt-get update \
&& apt-get install -y --no-install-recommends software-properties-common \
&& add-apt-repository -y ppa:deadsnakes/ppa \
&& apt-get update \
&& apt-get install -q -y --no-install-recommends python3.6 python3.6-dev python3-pip python3-setuptools \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
VOLUME /home/ec2-user/docker_test/data
VOLUME /home/ec2-user/docker_test/code
WORKDIR /home/ec2-user/docker_test/
COPY requirements.txt ./
RUN cat requirements.txt | xargs -n 1 -L 1 python3.6 -m pip install --no-cache-dir
COPY . .
ENV LC_ALL C.UTF-8
ENV LANG=C.UTF-8
CMD python3.6 main.py
Python脚本:
import pandas as pd
import os
from code import processing
path = os.getcwd()
def main():
df = pd.read_csv(path + '/data/table.csv')
print('input df: \n{}'.format(df))
df_out = processing.processing(df)
df_out.to_csv(path + '/data/updated_table.csv', index = False)
print('\noutput df: \n{}'.format(df_out))
if __name__ == '__main__':
main()
编辑: 我一直在使用“docker run docker_test”运行dockerfile。
docker run
命令? - bluescores