gpt4 book ai didi

docker - Dockerfile在入口点执行其他脚本

转载 作者:行者123 更新时间:2023-12-02 19:19:37 26 4
gpt4 key购买 nike

我正在从glats/alpine-lamp构建一个lamp容器用于开发工作。容器加载后,我想运行一些其他sql命令(创建一个数据库和一些测试用户)。我创建了一个新的init.sh脚本,将其作为Dockerfile的入口点运行,如下所示:

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中,我正在执行父容器的 entrypoint script,但是由于此脚本不会退出并且不会在后台运行,因此我的添加操作永远不会执行。我尝试了几种不同的调用父脚本的方法,包括 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"

最佳答案

我认为基于mysql运行后还有其他方法可以运行初始查询的事实,您应该尝试从另一个 Angular 解决这个问题。
例如,您可以使用卷来设置./conf/docker-entrypoint-initdb.d类似于this显示的内容

编辑:
您还可以将.sh文件放在目录中,不仅是.sql文件。
它们按字母顺序执行。
有更好的解释herehere

关于docker - Dockerfile在入口点执行其他脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60789358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com