Я использую flyway-контейнер, и он хорошо работает локально: docker run -v ${PWD}/db/migration:/flyway/sql --rm flyway/flyway -mixed=true -url='jdbc:sqlserver://my-server.net;databaseName=TEST_DB' -user=$MSSQL_USER -password=$MSSQL_PW migrate
Я пытался использовать его в gitlab-ci, но следующее не работает, потому что часть docker run
выдает ошибку - cannot connect to docker daemon
.
stages:
- test
- deploy
test-migration:
stage: test
services:
- microsoft/mssql-server-linux:2017-latest-ubuntu
- docker-hub/docker:dind
variables:
ACCEPT_EULA: 'Y'
SA_PASSWORD: 'YourStrong!Passw0rd'
script:
- docker run -v ${PWD}/db/migration:/flyway/sql --rm flyway/flyway -mixed=true -url='jdbc:sqlserver://ssql-server-linux:1433;databaseName=TEST_DB' -user=SA -password='YourStrong!Passw0rd' migrate
deploy:
stage: deploy
services:
- docker-hub/docker:dind
script:
- docker run -v ${PWD}/db/migration:/flyway/sql --rm flyway/flyway -mixed=true -url='jdbc:sqlserver://my-server.net;databaseName=TEST_DB' -user=$MSSQL_USER -password=$MSSQL_PW migrate
Вместо вызова Docker Run следует использовать
image: flyway/flyway
и вызывать команду в разделе сценариев.
Но мне интересно узнать о монтированииvolume
, который пока не поддерживается в gitlab CI. https://gitlab.com/gitlab-org/gitlab-runner/issues/3207
Есть идеи?