我正在尝试设置一个 docker-compose 服务,添加我自己的环境变量并设置值。 我的服务基于我正在创建的自定义图像,并在其中运行一些我拥有的自定义脚本。
但是,当我运行服务并且图像开始构建时,会导致错误。
如果我不在 Docker 映像中运行脚本,而是对其进行注释并等待容器启动,然后进入容器并在容器内执行脚本,则脚本执行时不会出现任何问题。
所以问题出在构建图像时
server-init:
build:
context: ./server
dockerfile: server-init.dockerfile
image: server-init:1.16.1
environment:
API_ADDR: "http://server:5000"
UI_USERNAME: "admin"
UI_PASSWORD: "pass"
restart: unless-stopped
这是 Dockerfile:
# base image
FROM ubuntu:20.04
# download dependencies
RUN apt-get update && \
apt-get install -y curl && \
apt-get install -y jq
# add script files
COPY ./scripts/init.sh /scripts/init.sh
# set working directory
WORKDIR scripts
# start init process
RUN sh init.sh
# set default command to start a bash shell
CMD ["tail", "-f", "/dev/null"]
这是脚本:
# don't forget about lini ending UNIX should be LF
#!/bin/sh
base_url=$(sh -c 'echo $API_ADDR')
# Init request
curl --request POST --data '{"init":'true'}' "$base_url/init"
这是构建图像时的输出:
=> ERROR [server-init 14/14] RUN sh init.sh 0.5s
------
> [server-init 14/14] RUN sh init.sh:
0.444 curl: (3) URL using bad/illegal format or missing URL
------
failed to solve: process "/bin/sh -c sh init.sh" did not complete successfully: exit code: 3
已修复(正文必须至少 30 个字符)