bug(portal-data): support compose reconnects
This commit is contained in:
parent
bc679d6ac6
commit
be842aba31
@ -54,8 +54,6 @@ docker-compose-api:
|
|||||||
environment:
|
environment:
|
||||||
- CONSUL=consul
|
- CONSUL=consul
|
||||||
restart: always
|
restart: always
|
||||||
dns:
|
|
||||||
- 127.0.0.1
|
|
||||||
|
|
||||||
traefik:
|
traefik:
|
||||||
image: d0cker/traefik
|
image: d0cker/traefik
|
||||||
|
@ -14,6 +14,8 @@ RUN npm install -g npm@^4 \
|
|||||||
&& ./node_modules/.bin/lerna bootstrap --scope portal-api --include-filtered-dependencies
|
&& ./node_modules/.bin/lerna bootstrap --scope portal-api --include-filtered-dependencies
|
||||||
|
|
||||||
COPY packages/portal-api/etc/containerpilot.json5 ${CONTAINERPILOT}
|
COPY packages/portal-api/etc/containerpilot.json5 ${CONTAINERPILOT}
|
||||||
|
COPY packages/portal-api/bin /bin
|
||||||
|
|
||||||
WORKDIR /opt/app/packages/portal-api
|
WORKDIR /opt/app/packages/portal-api
|
||||||
|
|
||||||
CMD ["/bin/containerpilot"]
|
CMD ["/bin/containerpilot"]
|
||||||
|
13
packages/portal-api/bin/prestart.sh
Executable file
13
packages/portal-api/bin/prestart.sh
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Copy creds from env vars to files on disk
|
||||||
|
if [ -n ${!TRITON_CREDS_PATH} ] \
|
||||||
|
&& [ -n ${!TRITON_CA} ] \
|
||||||
|
&& [ -n ${!TRITON_CERT} ] \
|
||||||
|
&& [ -n ${!TRITON_KEY} ]
|
||||||
|
then
|
||||||
|
mkdir -p ${TRITON_CREDS_PATH}
|
||||||
|
echo -e "${TRITON_CA}" | tr '#' '\n' > ${TRITON_CREDS_PATH}/ca.pem
|
||||||
|
echo -e "${TRITON_CERT}" | tr '#' '\n' > ${TRITON_CREDS_PATH}/cert.pem
|
||||||
|
echo -e "${TRITON_KEY}" | tr '#' '\n' > ${TRITON_CREDS_PATH}/key.pem
|
||||||
|
fi
|
@ -1,9 +1,17 @@
|
|||||||
{
|
{
|
||||||
consul: 'localhost:8500',
|
consul: 'localhost:8500',
|
||||||
jobs: [
|
jobs: [
|
||||||
|
{
|
||||||
|
"name": "setup-config",
|
||||||
|
"exec": "/bin/prestart.sh"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'bootstrap',
|
name: 'bootstrap',
|
||||||
exec: 'node bootstrap-data.js'
|
exec: 'node bootstrap-data.js',
|
||||||
|
when: {
|
||||||
|
source: 'setup-config',
|
||||||
|
once: 'exitSuccess'
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'api',
|
name: 'api',
|
||||||
@ -22,7 +30,8 @@
|
|||||||
when: {
|
when: {
|
||||||
source: 'bootstrap',
|
source: 'bootstrap',
|
||||||
once: 'exitSuccess'
|
once: 'exitSuccess'
|
||||||
}
|
},
|
||||||
|
restarts: 'unlimited'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'consul-agent',
|
name: 'consul-agent',
|
||||||
|
@ -24,6 +24,10 @@ module.exports = function (server, options, next) {
|
|||||||
data
|
data
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
data.on('error', (err) => {
|
||||||
|
server.log(['error'], err);
|
||||||
|
});
|
||||||
|
|
||||||
data.connect((err) => {
|
data.connect((err) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
return next(err);
|
return next(err);
|
||||||
@ -65,6 +69,6 @@ internals.refresh = function (data) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
data._dockerCompose.client.connect(`tcp://${docker.address}:${docker.port}`);
|
data.reconnectCompose(`tcp://${docker.address}:${docker.port}`);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -61,6 +61,15 @@ module.exports = class Data extends EventEmitter {
|
|||||||
this._db.establish(internals.tables, cb);
|
this._db.establish(internals.tables, cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reconnectCompose (dockerComposeHost) {
|
||||||
|
this._dockerCompose.close();
|
||||||
|
this._dockerCompose = new DockerClient(dockerComposeHost);
|
||||||
|
|
||||||
|
this._dockerCompose.on('error', (err) => {
|
||||||
|
this.emit('error', err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// portals
|
// portals
|
||||||
|
|
||||||
|
4
setup.sh
4
setup.sh
@ -31,6 +31,10 @@ check() {
|
|||||||
TRITON_CREDS_PATH=/root/.triton
|
TRITON_CREDS_PATH=/root/.triton
|
||||||
echo TRITON_CREDS_PATH=${TRITON_CREDS_PATH} >> _env
|
echo TRITON_CREDS_PATH=${TRITON_CREDS_PATH} >> _env
|
||||||
echo DOCKER_CERT_PATH=${TRITON_CREDS_PATH} >> _env
|
echo DOCKER_CERT_PATH=${TRITON_CREDS_PATH} >> _env
|
||||||
|
echo DOCKER_TLS_VERIFY=1 >> _env
|
||||||
|
echo COMPOSE_HTTP_TIMEOUT=300 >> _env
|
||||||
|
echo DOCKER_CLIENT_TIMEOUT=300 >> _env
|
||||||
|
echo DOCKER_HOST=${DOCKER_HOST} >> _env
|
||||||
echo TRITON_USER=${TRITON_USER} >> _env
|
echo TRITON_USER=${TRITON_USER} >> _env
|
||||||
echo TRITON_DC=${TRITON_DC} >> _env
|
echo TRITON_DC=${TRITON_DC} >> _env
|
||||||
echo TRITON_CA=$(cat "${DOCKER_CERT_PATH}"/ca.pem | tr '\n' '#') >> _env
|
echo TRITON_CA=$(cat "${DOCKER_CERT_PATH}"/ca.pem | tr '\n' '#') >> _env
|
||||||
|
Loading…
Reference in New Issue
Block a user