commit 93dcc136a3c0856fc6e8b6ad29ea7d4df6a60f02 Author: Cian Hughes Date: Tue Dec 5 17:10:55 2023 +0000 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3f8a9a0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.keys +volumes.yaml \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..ced2a60 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,90 @@ +services: + # The first service is a portainer instance that allows for easy management of the swarm + portainer: + image: portainer/portainer-ce:latest + ports: + - "9000:9000" + - "9001:9001" + volumes: + - portainer_data:/data + - /var/run/docker.sock:/var/run/docker.sock + deploy: + replicas: 1 + restart_policy: + condition: on-failure + placement: + constraints: + - node.role == manager + # We also want a watchtower instance to automatically update our services + watchtower: + image: containrrr/watchtower:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + deploy: + replicas: 1 + restart_policy: + condition: on-failure + placement: + constraints: + - node.role == manager + # This service runs a grafana instance for hosting dashboards + grafana: + image: grafana/grafana:latest + ports: + - "3000:3000" + volumes: + - grafana:/var/lib/grafana + deploy: + replicas: 1 + restart_policy: + condition: on-failure + # The following service is a simple nginx server that hosts static websites + nginx: + image: nginx:latest + ports: + - "80:80" + volumes: + - web:/usr/share/nginx/html + deploy: + replicas: 1 + restart_policy: + condition: on-failure + # And, finally, we want to add a dataverse instance to the swarm + dataverse: + image: gdcc/dataverse:alpha + ports: + - "8080:8080" + volumes: + - dataverse:/usr/local/glassfish4/glassfish/domains/domain1/autodeploy + deploy: + replicas: 1 + restart_policy: + condition: on-failure + +# This defines the NFS volumes for persistence +#! This requires nodes to be IP whitelisted in the NAS +volumes: + portainer_data: + driver: local + driver_opts: + type: nfs + device: ":volume1/portainer_data" + o: "addr=I-Form_Data,rw,noatime,rsize=8192,wsize=8192,tcp,timeo=14,nfsvers=4" + web: + driver: local + driver_opts: + type: nfs + device: ":volume1/web" + o: "addr=I-Form_Data,rw,noatime,rsize=8192,wsize=8192,tcp,timeo=14,nfsvers=4" + grafana: + driver: local + driver_opts: + type: nfs + device: ":volume1/grafana" + o: "addr=I-Form_Data,rw,noatime,rsize=8192,wsize=8192,tcp,timeo=14,nfsvers=4" + dataverse: + driver: local + driver_opts: + type: nfs + device: ":volume1/dataverse" + o: "addr=I-Form_Data,rw,noatime,rsize=8192,wsize=8192,tcp,timeo=14,nfsvers=4" \ No newline at end of file