【发布时间】:2021-01-17 12:09:23
【问题描述】:
我的 Ubuntu 容器有下一个 Dockerfile
FROM ubuntu:14.04
# Install.
RUN \
sed -i 's/# \(.*multiverse$\)/\1/g' /etc/apt/sources.list && \
apt-get update && \
apt-get -y upgrade && \
apt-get install -y build-essential && \
apt-get install -y software-properties-common && \
apt-get install -y byobu curl git htop man unzip vim wget jq && \
rm -rf /var/lib/apt/lists/*
# Set environment variables.
ENV HOME /root
# Define working directory.
WORKDIR /root
# Define default command.
ENTRYPOINT ["/bin/bash"]
#First create an Auth token for Sonar server
ENTRYPOINT [ "token=$(curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "name=WindowsTokenFinal" -u admin:pass 10.0.0.2:9000/api/user_tokens/generate | jq -r '.token')"]
#
# #Save session cookies
ENTRYPOINT ["COOKIEJAR="$(mktemp)""]
#
# #Generate crumb of Jenkins
ENTRYPOINT ["CRUMB=$(curl -u "admin:pass" --cookie-jar "$COOKIEJAR" "http://10.0.0.3:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb)")"]
#
# #Create Credentials on Jenkins Server
ENTRYPOINT ["curl -X POST -u "admin:pass" --cookie "$COOKIEJAR" -H "$CRUMB" 'http://10.0.0.3:8080/credentials/store/system/domain/_/createCredentials' --data-urlencode 'json={"": "0","credentials": {"scope": "GLOBAL","id": "WindowsAutoToken","description": "Automatically generated sonar token from windows","secret": "$Token", "$class": "org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl"}}'"]
第一个问题是它只执行最后一个ENTRYPOINT,但如果我只运行第一个,
ENTRYPOINT [ "token=$(curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "name=WindowsTokenFinal" -u admin:pass 10.0.0.2:9000/api/user_tokens/generate | jq -r '.token')" ]
它不保存令牌变量。
如果我在容器内执行命令就没有问题并且它运行良好,但是我需要在容器启动后运行这些命令,而不是自己运行它们。
【问题讨论】:
标签: docker ubuntu jenkins curl dockerfile