![](/img/trans.png)
[英]How can I deploy a graphql API with docker-compose in azure
[英]How can I use a Jenkins pipeline to create a docker image from docker-compose?
I'm trying to build a docker image for elasticsearch and deploy the image (to an Azure registry and have it run as an Azure Web App).
我用Dockerfile
做得很好,但不知道如何用docker-compose.yml
文件做到這一點。
這是我的 docker-compose:
version: '3.8'
services:
elasticsearch:
container_name: elasticsearch
image: library/elasticsearch:6.8.15
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- ./data:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
networks:
- backend
networks:
backend:
name: backend-network-elasticsearch
和我的 Jenkinsfile
pipeline {
environment {
APP = 'elasticsearch01'
registry = "utilitaweb.azurecr.io/${APP}"
registryUrl = "https://___.azurecr.io"
registryCredential = 'azureregistry'
dockerImage = ''
buildNumber = "build_$BUILD_NUMBER"
}
agent any
stages {
stage('Building image') {
steps{
???
}
}
stage('Deploy Image') {
steps{
script {
docker.withRegistry(registryUrl, registryCredential) {
dockerImage.push()
dockerImage.push(buildNumber)
}
}
}
}
}
}
在構建步驟中我應該有什么?
以前我有dockerImage = docker.build("${registry}:latest", "--build-arg APP=${APP} --build-arg -f Dockerfile.")
或類似的,但顯然這贏了不行。
我認為這是由於我對 Docker 而不是 Jenkins 缺乏了解。
Docker Compose 使用 Dockerfiles 構建鏡像。 在上面的docker-compose.yml
中,您不是在構建映像,而只是使用從注冊表中構建的映像(正如 @David Maze 已經指出的那樣)。
大多數人不會在生產中使用 compose 文件,除非他們使用 Swarm 模式。 雖然它可以用於生產,但人們傾向於僅在開發環境中使用 Docker Compose。
您有兩個選擇: a) 將 Docker 映像的構建與您的應用程序項目綁定,或者; b) 有一個單獨的管道來構建你的 Docker 圖像,如果你有很多圖像,這是首選;
在 A 的情況下,只需在項目存儲庫中的某處有一個 Dockerfile 並在管道中創建階段以構建、上傳然后將該映像部署到容器協調器基礎架構。 它可能是一個 Docker 主機、一個 Kubernetes 集群、一個 Swarm、Fargate、ECS 等。在 B 的情況下,你已經有了一個基礎鏡像,你將通過另一個 Z3254677A7918FZFZFZFZC27C76C 導入到你的項目中在這個二級 Dockerfile 中,很可能您只需復制您的源代碼。 然后,只需將其上傳到您的注冊表,最后將其部署到您的基礎架構。
此致。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.