本篇记录学习使用Docker进行参赛结果的提交,并记录使用过程中容易遇到的一些常见的问题。
官方指导教程:《手把手超详细操作说明》
1 赛题介绍
赛题入口:link
2 Docker
1 安装 Docker 环境:
sudo apt-get update
sudo apt install docker.io
2 按官方指导教程:《手把手超详细操作说明》创建仓库。
3 制作自己的数据
建立一个做题的文件夹,并进入路径
sudo mkdir -p /home/tianchi_docker && cd /home/tianchi_docker
按照赛题要求创建相应文件
touch Dockerfile hello_world.py result.json 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"]
hello-world.py 中写好自己的做题的代码,注意:所给csv数据直接导入路径即可
以下是完整代码:
# coding:utf-8
import json
import csv
file_name = './tcdata/num_list.csv'
data = []
# 第一题,直接写入 Hello world
result = {
"Q1": "Hello world",
"Q2": 0,
"Q3": []
}
# 第二题,求和
with open(file_name, 'r', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
data.append(int(row[0]))
sum = sum(data)
result['Q2'] = sum
# 第三题
result['Q3'] = sorted(data, reverse=True)[0:10]
# 保存到 result.json
with open('result.json', 'w', encoding='utf-8') as f:
json.dump(result, f)
run.sh 中(一定要与你之前创建的答题代码文件名相同):
python hello_world.py
4 创建镜像并推送
创建镜像
docker build -t registry.cn-shanghai.aliyuncs.com/命名空间/仓库名称:版本号 上面创建好的文件夹路径
查看docker
sudo docker images
登录阿里云Docker Registry
sudo docker login --username=用户名 registry.cn-shanghai.aliyuncs.com
将镜像推送到Registry
sudo docker push registry.cn-shanghai.aliyuncs.com/命名空间/仓库名称:版本号
3 提交结果
在左侧【提交结果】中填写推送的镜像路径、用户名和密码,即可提交。根据【我的成绩】中的分数和日志可以查看运行情况。