Commit 133d278b authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Actualiza definición, reubica imagen Docker

Pone al día la definición de la imagen que genera el proyecto. Acepta
argumentos para modificar las versiones de imagen base y dependencia
docker, muestra las versiones disponibles al construir.

Define docker-compose y fichero .env para facilitar la construcción de
la imagen.

Hace uso de plantillas CI para definir los trabajos.

Actualiza readme para reflejar el cambio de repositorio de imagen
Docker, ya que al usar las plantillas CI se respeta el patrón de nombres
decidido por defecto (con el nombre del grupo padre del proyecto como
prefijo). Añade parámetros de ejecución al ejemplo, ya que son los que
se han usado hasta ahora en producción.
parent 526d37dc
Loading
Loading
Loading
Loading

.env

0 → 100644
+2 −0
Original line number Diff line number Diff line
NODE_IMAGE_TAG=17.4.0-alpine3.15
DOCKER_VERSION=20.10.11-r0

.gitignore

deleted100644 → 0
+0 −0

Empty file deleted.

+6 −61
Original line number Diff line number Diff line
image: docker:stable
include:
  - project: 'redmic-project/gitlab-ci-templates'
    ref: master
    file: '/packaging.yml'

stages:
  - pre-package
  - package
  - test-package

variables:
  DOCKER_DRIVER: overlay2

services:
  - docker:dind

docker-build-development:
  stage: package
  variables:
    DOCKER_HUB_IMAGE: ${DOCKER_HUB_USER}/${CI_PROJECT_NAME}
  only:
    - branches
  except:
    - master
  script:
    - >
      docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}-latest
      -t ${DOCKER_HUB_IMAGE}:${CI_COMMIT_SHA} -t ${DOCKER_HUB_IMAGE}:${CI_COMMIT_REF_NAME}-latest .
    - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
    - docker push ${CI_REGISTRY_IMAGE}
    - docker login -u ${DOCKER_HUB_USER} -p ${DOCKER_HUB_PASS}
    - docker push ${DOCKER_HUB_IMAGE}

docker-build-stable:
  stage: package
  variables:
    DOCKER_HUB_IMAGE: ${DOCKER_HUB_USER}/${CI_PROJECT_NAME}
  only:
    - master
  script:
    - >
      docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} -t ${CI_REGISTRY_IMAGE}:latest
      -t ${DOCKER_HUB_IMAGE}:${CI_COMMIT_SHA} -t ${DOCKER_HUB_IMAGE}:latest .
    - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
    - docker push ${CI_REGISTRY_IMAGE}
    - docker login -u ${DOCKER_HUB_USER} -p ${DOCKER_HUB_PASS}
    - docker push ${DOCKER_HUB_IMAGE}

container-scanning:
  stage: test-package
  allow_failure: true
  only:
    - branches
  script:
    - docker run -d --name db arminc/clair-db:latest
    - docker run -p 6060:6060 --link db:postgres -d --name clair arminc/clair-local-scan:v2.0.1
    - apk add -U wget ca-certificates
    - docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
    - docker pull ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA}
    - wget https://github.com/arminc/clair-scanner/releases/download/v8/clair-scanner_linux_amd64
    - mv clair-scanner_linux_amd64 clair-scanner
    - chmod +x clair-scanner
    - touch clair-whitelist.yml
    - >
      ./clair-scanner -c http://docker:6060 --ip $(hostname -i) -r gl-sast-container-report.json -l clair.log
      -w clair-whitelist.yml ${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA} || true
  artifacts:
    paths: [gl-sast-container-report.json]
  - post-package
+10 −2
Original line number Diff line number Diff line
FROM node:alpine
ARG NODE_IMAGE_TAG=17.4.0-alpine3.15

FROM node:${NODE_IMAGE_TAG}

# Inspired by elifa/swarm-healthcheck
LABEL maintainer="info@redmic.es"

RUN apk add --no-cache docker
ARG DOCKER_VERSION=20.10.11-r0

RUN apk update && \
	apk list \
		docker && \
	apk add --no-cache \
		docker="${DOCKER_VERSION}"

COPY healthcheck.js /healthcheck.js

+12 −4
Original line number Diff line number Diff line
@@ -5,8 +5,16 @@ Inspired by [elifa/swarm-healthcheck](https://github.com/elifa/swarm-healthcheck

## Usage

```
docker run -v /var/run/docker.sock:/var/run/docker.sock \
	-p 3333:80 --memory '64m' --cpus '0.25' \
	redmic/swarm-healthcheck
```sh
docker run -d \
  --name=swarm-healthcheck \
  -p 3333:80 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --oom-kill-disable \
  --log-driver=json-file \
  --log-opt max-size=1m \
  --memory '64m' \
  --memory-reservation '32m' \
  --cpus '0.25' \
  redmic/docker-swarm-healthcheck
```
Loading