Сервисы Wercker не связаны с основным контейнером

Проблема, с которой я сталкиваюсь в Wercker, заключается в том, что определенные связанные службы в моем wercker.yml не связаны с моим основным док-контейнером.

Я заметил эту проблему, когда мое приложение узла не работало на порте 3001 после успешного развертывания Wercker, в котором его вывод можно увидеть на изображении ниже.

введите описание изображения здесь

Поэтому я подключился по SSH к своему серверу и в свой докер-контейнер, который работал после развертывания Wercker, используя:

docker exec -i -t <my-container-name> ./bin/bash

и обнаружил следующую ошибку MongoDB в моих журналах PM2:

[MongoError: connect EHOSTUNREACH 172.17.0.7:27017

Странный факт состоит в том, что из изображений ниже вы можете видеть, что обе переменные среды, которые мне нужны для каждого соответствующего сервиса, были установлены:

введите описание изображения здесь

введите описание изображения здесь

Кто-нибудь знает, почему сервисные контейнеры не могут быть доступны из моего основного контейнера, даже если они думали, что их переменные среды установлены?

Следующим является файл wercker.yml, который я использую.

box: node

services:
  - id: mongo
  - id: redis

build:
  steps:
    - npm-install

deploy:
  steps:
    - npm-install
    - script:
        name: install pm2
        code: npm install pm2 -g
    - internal/docker-push:
        username: $DOCKER_USERNAME
        password: $DOCKER_PASSWORD
        repository: /
        ports: "3001"
        cmd: /bin/bash -c "cd /pipeline/source && pm2 start processes_prod.json --no-daemon"
        env: "MONGO_PORT_27017_TCP_ADDR"=$MONGO_PORT_27017_TCP_ADDR,"REDIS_PORT_6379_TCP_ADDR"=$REDIS_PORT_6379_TCP_ADDR
    - add-ssh-key:
        keyname: DIGITAL_OCEAN_KEY
    - add-to-known_hosts:
        hostname: 
    - script:
        name: pull latest image
        code: ssh root@ docker pull /:latest
    - script:
        name: stop running container
        code: ssh root@ docker stop  || echo ‘failed to stop running container’
    - script:
        name: remove stopped container
        code: ssh root@ docker rm  || echo ‘failed to remove stopped container’
    - script:
        name: remove image behind stopped container
        code: ssh root@ docker rmi /:current || echo ‘failed to remove image behind stopped container’
    - script:
        name: tag newly pulled image
        code: ssh root@ docker tag /:latest /:current
    - script:
        name: run new container
        code: ssh root@ docker run -d -p 8080:3001 --name  /:current
    - script:
        name: env
        code: env

1 ответ

Решение

AFAIK Сервисы Wercker доступны только в процессе сборки, но не в развертывании. Mongo и Redis являются постоянными хранилищами данных, то есть их не следует переустанавливать при каждом развертывании.
Поэтому убедитесь, что вы вручную настраиваете Redis и Mongo в своей среде развертывания.

Другие вопросы по тегам