【发布时间】:2020-10-31 15:18:27
【问题描述】:
我正在为 Sybase 数据库构建 docker 映像。 Docker build 命令失败,因为构建步骤“服务器”的名称不能以数字开头。
我已经搜索了很多方法来更改构建步骤机器的名称,到目前为止我的解决方案是重试构建,直到我得到一个以字母开头的名称...
Step 1/7 : FROM my_image as docker_sybase_db
---> d266899b4eef
Step 2/7 : COPY *.zip /mnt/backup/
---> Using cache
---> 9e8e405848ce
Step 3/7 : COPY entrypoint.sh ~
---> Using cache
---> 5c0c923985db
Step 4/7 : ENV HOSTNAME docker_sybase_db
---> Using cache
---> f2b39a7280a0
Step 5/7 : RUN init_db.sh
---> Running in 0ae1a95b3203
Server name '0ae1a95b3203' begins with an illegal character. The first
character of a server name must be an alphabetic ascii character.
Error running command 'srvbuild -r /tmp/my_super_build.rs':
如果我不能修改这个旧的 sybase 初始化脚本,我是不是运气不好?
编辑:这是我想要做的事情
- 创建数据库实例
- 加载备份
- 将预加载的实例打包到容器中。
加载备份需要很长时间,而且这个旧数据库系统要求服务器名称以字母开头,而不是数字。
【问题讨论】:
-
init_db.sh 里面有什么?我的意思是为什么你的脚本将 docker 层号作为服务器名称?
-
是的,这是来自 SAP infocenter.sybase.com/help/index.jsp?topic=/…的命令
-
标准 Docker Hub 数据库映像在实际容器运行之前不会尝试设置数据库。您能否将这一步推迟到那时(如果尚未完成,则使用入口点包装脚本进行初始化)?然后你可以
docker run --hostname设置容器认为它的主机名是什么。 -
Docker 运行 --hostname 是不可能的。我需要在映像构建中运行此步骤,因为我不想每次都进行大约 10 分钟的预处理。
标签: docker dockerfile