我的项目中有3个批次。我已将所有3个批次放入单个docker映像中。现在,要运行任何特定的批处理,我将调用带有命令行参数的docker run,shell脚本会将其考虑在内,并在映像内启动适当的批处理。
现在要在不同的时间段计划这3个批处理,我可以对带有适当参数的相同docker映像使用3个命令。但是如何部署(应用引擎或gke)以及从何处触发命令?在云调度程序中,只有Pub Sub / HTTP Url触发选项可用。因此找不到任何出路。
你能建议吗?
谢谢。
此致
阿林丹
答案 0 :(得分:1)
您的问题提出了问题,但是-首先-您为什么希望使用App Engine或GKE?
IIUC您可能可以使用Kubernetes CronJobs解决您的问题: https://cloud.google.com/kubernetes-engine/docs/how-to/cronjobs
Cloud Scheduler对HTTP和Pub / Sub的使用是因为它为服务提供了一种触发事件的通用方法。如果您希望使用Cloud Scheduler,则可以开发一个可显示例如HTTP接口,并在调用时对容器运行正确的命令。然后,您可以对Cloud Scheduler进行编程,以根据您的时间表调用边车,然后依次调用您的容器映像。此处的Cloud Scheduler示例中采用了与该方法类似的方法: https://cloud.google.com/scheduler/docs/start-and-stop-compute-engine-instances-on-a-schedule#set_up_the_functions_with
如果您不想使用Kubernetes,我认为最简单的解决方案是为您创建一个运行cron计划的Compute Engine实例,并根据需要在图像上简单地调用相应的public class DoctorsAdapter extends RecyclerView.Adapter<DoctorsAdapter.DoctorsViewHolder> {
private Context mContext;
private List<Doctors> doctorsList;
private View.OnClickListener mOnItemClickListener;
public DoctorsAdapter(Context mContext, List<Doctors> doctorsList) {
this.mContext = mContext;
this.doctorsList = doctorsList;
}
@Override
public DoctorsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.doctors_card, parent, false);
return new DoctorsViewHolder(view);
}
@Override
public void onBindViewHolder(final DoctorsViewHolder holder, final int position) {
Doctors doctors = doctorsList.get(position);
holder.title.setText(doctors.getName());
holder.specialty.setText(doctors.getSpecialty());
Log.d("DoctorsAdapter", "spcialty "+ doctors.getSpecialty());
Glide.with(mContext).load(doctors.getThumbnail()).into(holder.thumbnail);
holder.overflow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showPopUpMenu(holder.overflow);
}
});
}
@Override
public int getItemCount() {
return doctorsList.size();
}
public class DoctorsViewHolder extends RecyclerView.ViewHolder{
public TextView title, specialty;
public ImageView thumbnail, overflow;
public DoctorsViewHolder(View view) {
super(view);
title = (TextView) view.findViewById(R.id.title);
specialty = (TextView) view.findViewById(R.id.specialty);
thumbnail = (ImageView) view.findViewById(R.id.thumbnail);
overflow = (ImageView) view.findViewById(R.id.overflow);
view.setTag(this);
view.setOnClickListener(mOnItemClickListener);
}
}
public void setmOnItemClickListener(View.OnClickListener onItemClickListener) {
mOnItemClickListener = onItemClickListener;
}
}
命令。