docker 使用CMD或者ENTRYPOINT命令同时启动多个服务

docker 使用CMD或者ENTRYPOINT命令同时启动多个服务,第1张

docker使用CMD或者ENTRYPOINT命令同时启动多个服务

本文详细介绍了docker应用CMD或ENTRYPOINT命令启动其他几个服务,具有非常好的实用价值,希望对大家有所帮助。跟我回去看看。

要求:芹菜进口到django。当开始一个新的django项目时,如何开始芹菜服务?

使用ENTRYPOINT命令启动。

一、撰写Dockerfile文档

FROMcentos:7 RUNlocaledef-c-fUTF-8-izh_CNzh_CN.utf8 ENVLC_ALLzh_CN.UTF-8 COPY./hrms$CODE_DIR/hrms/ COPY./run$CODE_DIR/run/ RUNchmodax$CODE_DIR/run/* RUNpip3install-r$CODE_DIR/hrms/requirements.txt EXPOSE8080 WORKDIR/opt/hrms/hrms/

不需要看上面的,看下面的命令。

#启动一个服务用CMD就可以 #CMD["python3.5","/opt/hrms/hrms/manage.py","runserver","0.0.0.0:8080"] #启动好几个服务时,可以用CMD执行一个脚本,在脚本中启动好几个服务 CMDsource/opt/hrms/run/entrypoint.sh #启动好几个服务时,还能够用ENTRYPOINT执行一个脚本,在脚本中启动好几个服务 ENTRYPOINT["/opt/hrms/run/entrypoint.sh"]

CMDENTRYPOINT和CMD的区别在于,CMD命令可以被docker-compose.yml文件中的command命令覆盖。一旦给出具体命令,CMD命令就不会执行,ENTRYPOINT永远无法覆盖。

所以我们可以这样做:

用CMD启动一个脚本,然后启动脚本中的几个服务,比如django,celery等。如果只想做数据库迁移,可以在docker-compose.yml文件中的命令中执行pythonmanage.pymigrate,这样CMD命令就不容易执行而只是执行数据库迁移。

二。entrypoint.sh脚本文档

#!/bin/bash #启动django python3.5/opt/hrms/hrms/manage.pyrunserver0.0.0.0:8080& #启动worker celeryworker-Acelery_tasks.main-linfo-f/opt/hrms/logs/celery.log&#这儿留意日志部位要写相对路径 #启动beat celerybeat-Acelery_tasks.main-linfo

注意:前两个服务必须在后台程序中,也就是加一个&最后一个服务要在前台 *** 作。

否则,如果所有前台都在运行,只会启动第一个服务。如果执行了所有后台程序,则在执行了最后一个服务后,将收回器皿。

填写专长:Docker文件CMD的应用

CMD的三种文件格式:

Cmd["executable","param1","param2"](execform,首选文件格式)

Cmd["param1","param2"](作为入口点默认设置的主要参数)

CMD命令param1param2(外壳形式)

常见问题:

上面的exec表单将被解析成一个JSON数组,这意味着您必须应用双引号而不是单引号。

Exec不容易启用命令行编译器(命令shell)。

比如在cmd["echo","HOME"]中,要改变HOME的论点并不容易。如果使用shell,应该是这样的:cmd["sh","-c","echo$home"]

Dockfile中应该只有一个CMD。如果有几个,总是执行最后一个。

文件格式应用示例:

CMD["sh","run.sh"]

或者

CMDshrun.sh

以上docker应用CMD或ENTRYPOINT命令启动其他几个服务就是我跟大家分享的全部。期待给你一个参考,也期待你的申请。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/774114.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存