diff --git a/README.md b/README.md index f781a9a..667d1d7 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,25 @@ -# Docker +# Verdnatura Docker images Dockerfile and compose files used as basis for service deployment. -## Prepare environment +To build, tag and push an image you can use the provided *push.sh* script. -``` -registry=[registryUrl] -image=[imageName] -tag=[versionTag] -``` +## Registry authentication -## Build image - -Build the image with *latest* tag. -``` -docker build -t $registry/$image $image -``` - -Tag the image with version. -``` -docker tag $registry/$image $registry/$image:$tag -``` - -Test image locally -``` -docker run --name test $registry/$image:$tag -``` - -## Push image - -Login into docker registry (If it's the first time or you are not saving credentials). +Login into docker registry, if you don't logout, credentials will remain saved +in your home directory. ``` docker login $registry ``` -Push the *latest* image and version tag. -``` -docker push $registry/$image -docker push $registry/$image:$tag -``` - -Logout from docker registry (If you don't logout, credentials will remain saved -in your home directory). +Logout from docker registry. ``` docker logout $registry ``` + +## Test image + +Run image locally. +``` +docker run --name test $registry/$image:$tag +``` diff --git a/debuild/Dockerfile b/debuild/Dockerfile index 50ab619..0cd0b8c 100644 --- a/debuild/Dockerfile +++ b/debuild/Dockerfile @@ -7,7 +7,6 @@ RUN apt-get update \ build-essential \ debhelper \ devscripts \ - reprepro \ sudo RUN apt-get update \ @@ -22,10 +21,9 @@ RUN apt-get update \ && npm install -g npm RUN groupadd -g 1000 jenkins \ - && useradd -d /var/jenkins_home -u 1000 -g 1000 -m -s /bin/bash jenkins \ + && useradd -d /home/jenkins -u 1000 -g 1000 -m -s /bin/bash jenkins \ && echo "jenkins ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/jenkins \ - && mkdir /reprepro + && mkdir -p /home/jenkins/agent/workspace \ + && chown -R jenkins:jenkins /home/jenkins/agent -VOLUME ["/reprepro"] - -COPY vn-includedeb /usr/bin/ +USER jenkins diff --git a/mrbs/kube-compose.yml b/mrbs/kube-compose.yml deleted file mode 100644 index 48ca509..0000000 --- a/mrbs/kube-compose.yml +++ /dev/null @@ -1,162 +0,0 @@ -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: mrbs - labels: - app: mrbs -spec: - ingressClassName: nginx - rules: - - host: mrbs.verdnatura.es - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: mrbs - port: - number: 80 ---- -apiVersion: v1 -kind: Service -metadata: - name: mrbs - labels: - app: mrbs -spec: - ports: - - port: 80 - targetPort: 80 - selector: - app: mrbs ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: mrbs - labels: - app: mrbs -spec: - replicas: 1 - selector: - matchLabels: - app: mrbs - strategy: - type: Recreate - template: - metadata: - labels: - app: mrbs - spec: - containers: - - image: registry.verdnatura.es/mrbs:1.11.2-vn1 - name: main - ports: - - containerPort: 80 - resources: - limits: - memory: 1Gi - volumeMounts: - - name: secret - mountPath: /var/www/html/web/config.inc.php - subPath: config.inc.php - restartPolicy: Always - imagePullSecrets: - - name: regcred - volumes: - - name: secret - secret: - secretName: mrbs.config - defaultMode: 420 ---- -apiVersion: v1 -kind: Service -metadata: - name: mrbs-db - labels: - app: mrbs-db -spec: - type: NodePort - ports: - - port: 3306 - targetPort: 3306 - selector: - io.kompose.service: mrbs-db ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: mrbs.db - labels: - app: mrbs -spec: - replicas: 1 - selector: - matchLabels: - io.kompose.service: mrbs-db - strategy: - type: Recreate - template: - metadata: - labels: - io.kompose.service: mrbs-db - spec: - containers: - - image: mariadb:10.11.4 - name: mrbs-db - args: - - --transaction-isolation=READ-COMMITTED - - --binlog-format=ROW - - --ignore-db-dir=lost+found - env: - - name: MYSQL_DATABASE - value: mrbs - - name: MYSQL_USER - value: mrbs - - name: MYSQL_PASSWORD - valueFrom: - secretKeyRef: - name: mrbs.env - key: MYSQL_PASSWORD - - name: MYSQL_ROOT_PASSWORD - valueFrom: - secretKeyRef: - name: mrbs.env - key: MYSQL_ROOT_PASSWORD - ports: - - containerPort: 3306 - resources: - limits: - memory: 500Mi - volumeMounts: - - mountPath: /var/lib/mysql - name: db - - mountPath: /etc/localtime - name: localtime - readOnly: true - restartPolicy: Always - volumes: - - name: db - persistentVolumeClaim: - claimName: mrbs.db - - name: localtime - hostPath: - path: /etc/localtime - type: File - readOnly: true ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: mrbs.db - labels: - app: mrdb -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 2Gi - storageClassName: csi-rbd-ssd-sc - volumeMode: Filesystem diff --git a/portainer/docker-compose.yml b/portainer/docker-compose.yml deleted file mode 100644 index 0aa52be..0000000 --- a/portainer/docker-compose.yml +++ /dev/null @@ -1,44 +0,0 @@ -version: '3.2' -services: - agent: - image: portainer/agent:2.17.1 - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - /var/lib/docker/volumes:/var/lib/docker/volumes - - /var/lib/rexray/volumes:/var/lib/rexray/volumes - networks: - - agent - deploy: - mode: global - placement: - constraints: [node.platform.os == linux] - resources: - limits: - memory: 500M - main: - image: portainer/portainer-ce:2.17.1 - command: -H tcp://tasks.agent:9001 --tlsskipverify - ports: - - "80:9000" - - "8000:8000" - volumes: - - data:/data - networks: - - agent - deploy: - mode: replicated - replicas: 1 - placement: - constraints: [node.role == manager] - resources: - limits: - memory: 2G -networks: - agent: - driver: overlay - attachable: true -volumes: - data: - driver: rexray - driver_opts: - size: 4 \ No newline at end of file diff --git a/push.conf b/push.conf new file mode 100644 index 0000000..307f46f --- /dev/null +++ b/push.conf @@ -0,0 +1,2 @@ +registry="registry.verdnatura.es/verdnatura" +revisionPrefix="vn" diff --git a/push.sh b/push.sh new file mode 100755 index 0000000..95ba774 --- /dev/null +++ b/push.sh @@ -0,0 +1,42 @@ +#!/bin/bash +set -e + +MY_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$MY_DIR/push.conf" + +# Prepare the environment + +image=$1 +version=$2 +revision=$3 + +if [[ -z "$image" || -z "$version" ]]; then + echo "Usage: $0 []" + exit 1 +fi + +tag="$version" +if [ ! -z "$revision" ]; then + tag="$tag-$revisionPrefix$revision" +fi + +fullImage="$registry/$image" +latestImage="$fullImage:latest" +taggedImage="$fullImage:$tag" + +echo "Image: $taggedImage" +read -p "Continue? (Default: no) [y|n]: " ANSWER +if [ "$ANSWER" != "y" ]; then + echo "Aborting push." + exit 3 +fi + +# Build and tag the image + +docker build -t "$latestImage" "$image" +docker tag "$latestImage" "$taggedImage" + +# Push the built image + +docker push "$latestImage" +docker push "$taggedImage" diff --git a/reprepro/Dockerfile b/reprepro/Dockerfile index 7642085..b0b71f8 100644 --- a/reprepro/Dockerfile +++ b/reprepro/Dockerfile @@ -12,12 +12,20 @@ RUN apt-get update \ && ln -sfT /dev/stdout "$APACHE_LOG_DIR/access.log" \ && ln -sfT /dev/stdout "$APACHE_LOG_DIR/other_vhosts_access.log" -COPY apache.conf /etc/apache2/conf-enabled/reprepro.conf - -WORKDIR /reprepro -COPY entrypoint.sh ./ - +WORKDIR /var/lib/reprepro EXPOSE 80 -ENTRYPOINT [ "/reprepro/entrypoint.sh" ] +RUN groupadd -g 600 reprepro \ + && useradd -d /var/lib/reprepro -u 600 -g 600 -m -s /bin/bash reprepro + +COPY apache-conf.conf /etc/apache2/conf-available/reprepro.conf +COPY apache-site.conf /etc/apache2/sites-available/reprepro.conf + +RUN a2enconf reprepro \ + && a2ensite reprepro \ + && a2dissite 000-default + +COPY entrypoint.sh / + +ENTRYPOINT [ "/entrypoint.sh" ] CMD ["apachectl", "-D", "FOREGROUND"] diff --git a/reprepro/README.md b/reprepro/README.md new file mode 100644 index 0000000..e3e0af4 --- /dev/null +++ b/reprepro/README.md @@ -0,0 +1,7 @@ +# Reprepro docker image + +APT server using Reprepro and Apache HTTP server. + +## Links + +* https://github.com/bbinet/docker-reprepro \ No newline at end of file diff --git a/reprepro/apache-conf.conf b/reprepro/apache-conf.conf new file mode 100644 index 0000000..3029531 --- /dev/null +++ b/reprepro/apache-conf.conf @@ -0,0 +1,8 @@ + + Options Indexes + Options +FollowSymLinks + AllowOverride None + Order Allow,Deny + Allow From All + Require all granted + \ No newline at end of file diff --git a/reprepro/apache-site.conf b/reprepro/apache-site.conf new file mode 100644 index 0000000..5ec4de5 --- /dev/null +++ b/reprepro/apache-site.conf @@ -0,0 +1,3 @@ + + DocumentRoot /var/lib/reprepro/repo/ + \ No newline at end of file diff --git a/reprepro/apache.conf b/reprepro/apache.conf deleted file mode 100644 index ed6c658..0000000 --- a/reprepro/apache.conf +++ /dev/null @@ -1,13 +0,0 @@ - - Options Indexes - Options +FollowSymLinks - AllowOverride None - Order Allow,Deny - Allow From All - Require all granted - - - Order Deny,Allow - Deny From All - Require all denied - \ No newline at end of file