【发布时间】:2021-10-17 21:28:22
【问题描述】:
每次执行“docker-compose up”时,我都需要部署一个新容器,因为该容器将为将在存储库中创建的每个合并请求在 Gitlab 管道中运行 SQL SERVER 数据库。
是否应该传递一个标志来执行此操作?我知道 --force-recreate,但它重新创建了 SAME 容器。我需要每次调用命令 docker-compose up 来创建另一个具有相同配置的容器。
有--scale SERVICE=NUM,但这不是我需要的。为什么?因为当我扩展时,我无法控制 docker 将抓取和使用哪个主机端口。
我打算怎么做?通过环境变量。看:
码头工人撰写文件
version: '2'
services:
db:
image: mcr.microsoft.com/mssql/server:2019-latest
container_name: ${CI_PIPELINE_ID}
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=${DATABASE_PASSWORD}
ports:
- "${CI_PIPELINE_ID}:1433"
我的 gitlab-ci:
stages:
- database_deploy
- build_and_test
- database_stop
database_deploy:
image: docker:latest
stage: database_deploy
services:
- name: docker
script:
- apk add py-pip
- pip install docker-compose==1.8.0
- cd ./docker; docker-compose up -d; docker ps
build_and_test:
image: maven:latest
stage: build_and_test
script:
- mvn test -Dquarkus.test.profile=homolog
- mvn checkstyle:check
artifacts:
paths:
- target
database_stop: &database_stop
image: docker:latest
stage: database_stop
services:
- name: docker
script:
- docker stop $CI_PIPELINE_ID
- docker rm -f $CI_PIPELINE_ID
- docker ps
cleanup_deployment_failure:
needs: ["build_and_test"]
when: on_failure
<<: *database_stop
【问题讨论】:
标签: docker docker-compose gitlab containers gitlab-ci