docker - Dockerfile 在入口点执行附加脚本
问题描述
我正在为glats/alpine-lamplamp
的开发工作构建一个容器。我想在容器加载后运行一些额外的 sql 命令(创建数据库和一些测试用户)。我创建了一个新脚本,作为 Dockerfile 的入口点运行,如下所示:init.sh
FROM glats/alpine-lamp
ENV MYSQL_ROOT_PASSWORD=password
COPY init.sh /init.sh
RUN chmod u+x /init.sh
ENTRYPOINT ["/init.sh"]
在我的init.sh
我正在执行父容器的入口点脚本,但是由于这个脚本不会退出并且不会在后台运行,所以我的添加永远不会被执行。我尝试了几种调用父脚本的不同方法,包括source entry.sh
、/bin/sh /entry.sh
和(/entry.sh)
. 我也尝试使用 将其发送到后台/entry.sh &
,但这也不起作用。
当父脚本不退出时,向容器添加其他入口点脚本的正确方法是什么?
编辑:我的初始化脚本
#!/bin/sh
#run the parent container's entry script
/entry.sh &
# now run the rest of the stuff that needs to happen
mysql -u root -ppassword -e "CREATE DATABASE IF NOT EXISTS mydatabase"
解决方案
推荐阅读
- dji-sdk - DJI Mobile SDK - 如何计算相邻航点之间的距离?
- php - 如何将扩展 WC_Product_Variable 的自定义 WooCommerce 产品类型添加到购物车
- java - 在类中如何从实例中获取属性?
- vue.js - 移除 style="display:none;" 时的 CSS 高度过渡
- javascript - 老虎机显示零作为结果
- html - 我正在尝试修改此 CSS 代码。每当我点击它时,我将如何防止它缩小
- visual-studio-2013 - 想要获取 2003 年至今的值
- ubuntu - Ubuntu16.04 Gnome 无法保存设置
- java - Java 8 - CrudRepository 类型中的方法 save(S)
不适用于参数(可选 ) - java - 如何使用 JAVA 中的循环打印此数字模式?