天池Docker练习场实践经验

最近天池的比赛都采用了Docker的方式进行提交,参加【安全AI挑战者计划第三期 - 文本分类对抗攻击】比赛前先进行进行docker的练习。这是自己第一次采用docker进行进行提交,遇到很多问题,几经周折,终于解决了该问题。现记录下自己踩过的坑,并进行总结。

练习地址:【入门】Docker练习场

正常流程

  1. 创建Dockerfile、main.py、run.sh这几个文件,tcdata/num_list.csv文件先创建在本地,最后提交时删除。
  2. 完成Dockerfile、main.py、run.sh这几个文件
    • Dockerfile文件
      # Base Images
      ## 从天池基础镜像构建
      FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
      
      ## 把当前文件夹里的文件构建到镜像的根目录下
      ADD . /
      
      ## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行)
      WORKDIR /
      	
      ## 镜像启动后统一执行 sh run.sh
      CMD ["sh", "run.sh"]
      
    • run.sh中的内容比较简单,就python main.py这一行。
    • main.py中的内容:
      # 加载Python自带 或通过pip安装的模块
      import json
      import csv
      
      # ----------------------------------------
      # 本地调试时使用的路径配置
      inp_path = './tcdata/num_list.csv'
      out_path = './result.json'
      # ----------------------------------------
      
      # ----------------------------------------
      # 提交时使用的路径配置(提交时请激活)
      # inp_path = '/tcdata/num_list.csv'
      # out_path = 'result.json'
      # ----------------------------------------
      target = {}
      
      data = []
      with open(inp_path, 'r') as csv_file:
          csv_reader = csv.reader(csv_file)
          for iterm in csv_reader:
              print(iterm)
              data.append(int(iterm[0]))
      
      # csv_file = open(inp_path, "r")
      # csv_reader = csv.reader(csv_file)
      
      data_sum =  sum(data)  
      print("before sort", data)
      data.sort(reverse=True)
      print("after sort", data)
      
      target['Q1'] = "Hello world"
      target['Q2'] = data_sum
      target['Q3'] = data[:10]
      
      result = json.dumps(target, ensure_ascii=False)
      
      with open(out_path, 'w') as f:
          f.write(result)
      
  3. 执行 sh run.sh

提交时需要先登录

坑一、提交时未写版本号

最后一步提交时,未填写版本。
天池Docker练习场实践经验_第1张图片

自己最大的一个坑,一步步按照网站中的教程进行操作,以为是随便的提交代码运行,最开始提交的一个文件,一直提示“curl: (26) couldn't open file "result.json"”。看到论坛的分享,才意识到问题所在。。。

你可能感兴趣的:(善用佳软,Docker)