我已经研究这个问题已有一段时间了,但找不到解决该问题的可靠方法。我尝试使用Jenkins和Sonarqube删除并重新安装docker容器,但仍然收到相同的错误。如果感觉好像我缺少什么,但不知道它是什么。
这部分属于一个单独的docker文件。
FROM jenkins/jenkins:lts
这是Sonarqube的另一个
FROM sonarqube:lts
这是我的docker-compose.yml文件。
version: '3.2'
services:
sonarqube:
build:
context: sonarqube/
ports:
- 9000:9000
- 9092:9092
container_name: sonarqube
jenkins:
build:
context: jenkins/
privileged: true
user: root
ports:
- 8080:8080
- 50000:50000
container_name: jenkins
volumes:
- /tmp/jenkins:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- sonarqube
这是我应用程序根目录中的docker文件
FROM maven:lts
COPY pom.xml sportsteams/
COPY src/ sportsteams/src/
WORKDIR sportsteams/
RUN mvn clean install
EXPOSE 8090
ENTRYPOINT [ "java", "-jar", "/sportsteams/target/jenkins.jar"]
这是Jenkins文件,也位于我的应用程序的根目录中。
def CONTAINER_NAME="sportsteams"
def CONTAINER_TAG="lts"
def DOCKER_HUB_USER="Mattjsg"
def HTTP_PORT="8090"
node {
stage('Initialize'){
def dockerHome = tool 'myDocker'
def mavenHome = tool 'myMaven'
env.PATH = "${dockerHome}/bin:${mavenHome}/bin:${env.PATH}"
}
stage('Checkout') {
checkout scm
}
stage('Build'){
sh "mvn clean install"
}
stage('Sonar'){
try {
sh "mvn sonar:sonar"
} catch(error){
echo "The sonar server could not be reached ${error}"
}
}
stage("Image Prune"){
imagePrune(CONTAINER_NAME)
}
stage('Image Build'){
imageBuild(CONTAINER_NAME, CONTAINER_TAG)
}
stage('Push to Docker Registry'){
withCredentials([usernamePassword(credentialsId: 'dockerHubAccount', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
pushToImage(CONTAINER_NAME, CONTAINER_TAG, USERNAME, PASSWORD)
}
}
stage('Run App'){
runApp(CONTAINER_NAME, CONTAINER_TAG, DOCKER_HUB_USER, HTTP_PORT)
}
}
def imagePrune(containerName){
try {
sh "docker image prune -f"
sh "docker stop $containerName"
} catch(error){}
}
def imageBuild(containerName, tag){
sh "docker build -t $containerName:$tag -t $containerName --pull --no-cache ."
echo "Image build complete"
}
def pushToImage(containerName, tag, dockerUser, dockerPassword){
sh "docker login -u $dockerUser -p $dockerPassword"
sh "docker tag $containerName:$tag $dockerUser/$containerName:$tag"
sh "docker push $dockerUser/$containerName:$tag"
echo "Image push complete"
}
def runApp(containerName, tag, dockerHubUser, httpPort){
sh "docker pull $dockerHubUser/$containerName"
sh "docker run -d --rm -p $httpPort:$httpPort --name $containerName $dockerHubUser/$containerName:$tag"
echo "Application started on port: ${httpPort} (http)"
}
答案 0 :(得分:0)
不要不要使用container_name
字段,该字段的值应与全局图像的名称相同。 container_name
告诉docker用此名称标记您的容器。因此,您将以某种方式覆盖默认值。
只需省略