I'm trying to setup on the same server (D.O. cloud) two different envs based on docker, once for staging and once for production.
The two envs are off course isolated and the deployment is assigned to gitlab ci/cd pipeline.
My goal is to run on the same server two different ci pipeline, once for staging and once for production.
At the beginning my conf was a single runner with docker executor but I notified that just one single env remained live after a pipeline execution (no matter what if it's from staging or production tag).
As I mentioned my goal is to have live both envs, then I thought to register a new runner in order to map one runner for one env (and tag).
Both runners with docker executor.
Here is my last configurations
.gitlab.ci.yml
image: tmaier/docker-compose:latest
stages:
- deploy-on-staging
- deploy-on-prod
services:
- docker:dind
before_script:
- docker info
- docker-compose --version
#job runs automatically for tags:staging
step-staging:
stage: deploy-on-staging
environment:
name: staging # must match the vars env
url: staging.mysite.com$STAGING_HTTP_PORT
only:
- staging
tags:
- staging
script:
- docker-compose -f docker/remote/docker-compose.yml -f docker/remote/docker-compose.staging.yml up -d
after_script:
- docker exec -i mysql_staging sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" < /docker-entrypoint-initdb.d/db.sql'
- docker exec mysql_staging sh -c 'exec mysql -u gu -p"$MYSQL_PASSWORD" -D dbname < /opt/somequeries.sql'
#job runs automatically for tags:production
step-prod:
stage: deploy-on-prod
environment:
name: production # must match the vars env
url: mysite.com
only:
- master
tags:
- production
script:
- docker-compose -f docker/remote/docker-compose.yml -f docker/remote/docker-compose.override.yml up -d
after_script:
- docker exec -i mysql_prod sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" < /docker-entrypoint-initdb.d/db.sql'
- docker exec mysql_prod sh -c 'exec mysql -u gu -p"$MYSQL_PASSWORD" -D dbname < /opt/somequeries.sql'
when: manual
config.toml
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "runner"
url = "https://gitlab.com"
token = "xxxxxxxxxxxxxxxxxxxx"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.docker]
tls_verify = false
image = "docker:stable"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache", "/builds:/builds"]
shm_size = 0
memory = "128m"
memory_swap = "256m"
memory_reservation = "128m"
[[runners]]
name = "staging_runner"
url = "https://gitlab.com"
token = "xxxxxxxxxxxxxxxxxxxx"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.docker]
tls_verify = false
image = "docker:stable"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache", "/builds:/builds"]
shm_size = 0
memory = "128m"
memory_swap = "256m"
memory_reservation = "128m"
I have not reached my goal yet. Plus now the staging pipeline give me back an error like this
error during connect: Get [http://docker:2378/v1.40/containers/mysql_staging/json:](http://docker:2378/v1.40/containers/mysql_staging/json:) dial tcp: lookup docker on XX.XXX.XX.X:53: no such host
Is my design correct to reach my goal?
If yes, do I have any misconfiguration?
Thank you in advance for your help.