如何安排在Google Cloud上运行的Docker

时间:2019-03-17 00:10:52

标签: docker google-app-engine google-cloud-scheduler

我的项目中有3个批次。我已将所有3个批次放入单个docker映像中。现在,要运行任何特定的批处理,我将调用带有命令行参数的docker run,shell脚本会将其考虑在内,并在映像内启动适当的批处理。

现在要在不同的时间段计划这3个批处理,我可以对带有适当参数的相同docker映像使用3个命令。但是如何部署(应用引擎或gke)以及从何处触发命令?在云调度程序中,只有Pub Sub / HTTP Url触发选项可用。因此找不到任何出路。

你能建议吗?

谢谢。

此致

阿林丹

1 个答案:

答案 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; } } 命令。