构建镜像时无法使用环境变量

问题描述 投票:0回答:1

我正在尝试设置一个 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
linux bash docker docker-compose sh
1个回答
0
投票

已修复(正文必须至少 30 个字符)

© www.soinside.com 2019 - 2024. All rights reserved.