#!/bin/bash # webservice container IMAGE_NAME="registry.bht-berlin.de:443/masi9606/webservice:dev" CONTAINER_NAME="webservice_container" CONTAINER_HTTP_PORT="8080" CONTAINER_HTTPS_PORT="8443" NGINX_CONF="/etc/nginx/sites-available/default" CERT_DIR="/etc/nginx/certs" WEB_SERVICE_DOMAIN="webservice.local" # prometheus container PROMETHEUS_IMAGE="prom/prometheus:latest" PROMETHEUS_CONTAINER_NAME="prometheus_monitor" PROMETHEUS_PORT="9090" PROMETHEUS_DOMAIN="monitoring.local" PROMETHEUS_CONFIG_FILE="prometheus.yml" # local network NETWORK_NAME="dev_network" # Stop old containers podman stop $CONTAINER_NAME podman rm -f $CONTAINER_NAME podman stop $PROMETHEUS_CONTAINER_NAME podman rm -f $PROMETHEUS_CONTAINER_NAME # Pull images podman pull $IMAGE_NAME podman pull $PROMETHEUS_IMAGE # Run webservice container podman run -d \ --name "$CONTAINER_NAME" \ --network "$NETWORK_NAME" \ --ip "10.89.0.2" \ -p "$CONTAINER_HTTP_PORT:$CONTAINER_HTTP_PORT" \ -p "$CONTAINER_HTTPS_PORT:$CONTAINER_HTTPS_PORT" \ "$IMAGE_NAME" # Install packages podman exec -it $CONTAINER_NAME apt-get update podman exec -it $CONTAINER_NAME apt-get install -y openssl nginx systemctl curl # Generate SSL certificate and key podman exec -it $CONTAINER_NAME bash -c "mkdir -p $CERT_DIR && \ openssl req -x509 -nodes -days 365 -newkey rsa:4096 \ -keyout $CERT_DIR/nginx.key -out $CERT_DIR/nginx.crt \ -subj '/CN=$WEB_SERVICE_DOMAIN'" podman cp default.conf $CONTAINER_NAME:$NGINX_CONF # Restart Nginx to apply the changes podman exec -it $CONTAINER_NAME systemctl restart nginx # Wait podman exec -it $CONTAINER_NAME sleep 5 # Add entry to /etc/hosts podman exec -it $CONTAINER_NAME bash -c "echo '127.0.0.1 $WEB_SERVICE_DOMAIN' >> /etc/hosts" echo "Testing from inside..." podman exec -it $CONTAINER_NAME curl -k https://$WEB_SERVICE_DOMAIN:$CONTAINER_HTTPS_PORT/ echo "Testing from outside..." sudo bash -c "echo '127.0.0.1 $WEB_SERVICE_DOMAIN' >> /etc/hosts" curl -k https://$WEB_SERVICE_DOMAIN:$CONTAINER_HTTPS_PORT/ echo "Testing Redis..." curl -k -X PUT --header 'Content-Type: text/plain; charset=utf-8' --data 'foo' https://$WEB_SERVICE_DOMAIN:$CONTAINER_HTTPS_PORT/state/bar # Check the value in the database podman exec -it $CONTAINER_NAME redis-cli KEYS '*' # Run Prometheus container podman run -d \ --name $PROMETHEUS_CONTAINER_NAME \ --network $NETWORK_NAME --ip "10.89.0.3" \ -p $PROMETHEUS_PORT:$PROMETHEUS_PORT \ -v $PWD/$PROMETHEUS_CONFIG_FILE:/etc/prometheus/prometheus.yml:Z \ $PROMETHEUS_IMAGE --config.file=/etc/prometheus/prometheus.yml # Test Prometheus sudo bash -c "echo '127.0.0.1 $PROMETHEUS_DOMAIN' >> /etc/hosts" curl http://$PROMETHEUS_DOMAIN:$PROMETHEUS_PORT/