Sign inSign up

ivoraedts/hello-docker-mudblazor

By ivoraedts

•Updated 4 months ago

.NET developer wanting to run a MudBlazor app over Docker on a Synology NAS

Image
Integration & delivery
Developer tools
Databases & storage
0

2.2K

ivoraedts/hello-docker-mudblazor repository overview

⁠About Hello Docker-Mudblazor

This is just open source code, which is hosted and explained in the docker-mudblazor⁠ Repository in Github.

⁠The Idea behind

On the github page, the idea behind is explained in detail. I am a software developer that just wanted to play around, make a mudblazor-app, and get it to work on my Synology DS220+ by running it in a Docker Container.

⁠That Synology DS220+

How my current NAS is connected

⁠Getting it to run on a Synology

Via DSM (I have 7.3.2 when documenting) go to the Package Manager, and install Container Manager. (which is needed for running Docker Containers).

If you just want to see if it works on minimal mode, you can try to get it to work via the Register tab and than get version 0.1 of all this. (as that is the only version not depending on storage / database) This is explained in detail here⁠

For newer versions, arrange some shared folders first via File Station that Container Manager can access, like /volume1/docker/hello-docker-mudblazor/docker/. Than create subfolders, named pgdata, mudblazor and http. Then generate a certificate, which is explaned here⁠ and copy that to the http-folder.

Then create a project, that maps to /volume1/docker/hello-docker-mudblazor via Container Manager, as explained here⁠

Put this yaml in it and then run it.

networks:
  docker-mudblazor:
    external: false

services:
  docker-mudblazor:
    image: ivoraedts/hello-docker-mudblazor:latest
    depends_on:
      postgres: 
        condition: service_healthy
        restart: true
    networks:
      - docker-mudblazor
    volumes:
     # - /volume1/docker/hello-docker-mudblazor/data:/app/data
      - ./docker/mudblazor:/app/data
      - ./docker/https:/app/https:ro
    ports:
      # <Host Port>:<Container Port>
      - "3080:8080"
      - "3081:8081"
    environment:
      # Connection string for the database (overrides appsettings.json)
      ConnectionStrings__MudBlazorDatabase: "Host=postgres:5432; Database=SomeTestDatabase; Username=user-name; Password=strong-password"
      S3__ServiceURL: "http://minio:9000"
      # Instead of the Synology local IP adress, you can better use the QuickConnect ID or a DDNS hostname
      S3__PublicURL: "http://192.168.2.16:9000/"
      # Other configurable parameters can go here
      ASPNETCORE_ENVIRONMENT: Production

  postgres:
    image: postgres:latest
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -d SomeTestDatabase"]
      interval: 10s
      retries: 5
      start_period: 10s
      timeout: 10s
    container_name: docker-mudblazor.postgres
    #command: postgres -c max_connections=100
    volumes:  
    # This fix applies to version 18 and later. before it could mount to /var/lib/postgresql/data
    # This fix applies to version 18 and later: mount to /var/lib/postgresql/docker works, but does not persist
      - ./docker/pgdata:/var/lib/postgresql
    networks:
      - docker-mudblazor
    environment:
      POSTGRES_USER: user-name
      POSTGRES_PASSWORD: strong-password
    ports:
      # <Host Port>:<Container Port>
      - "1234:5432"   

  minio:
    image: minio/minio:latest
    container_name: docker-mudblazor.minio
    networks:
      - docker-mudblazor
    volumes:
      - ./docker/minio/data:/data
    ports:
      # MinIO API
      - "9000:9000"
      # MinIO Web Console
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: minioadmin
    command: minio server /data --console-address ":9001"
    
  minio-init:
    image: minio/mc:latest
    container_name: docker-mudblazor.minio-init
    depends_on:
      - minio
    entrypoint: >
      /bin/sh -c "
      /usr/bin/mc alias set myminio http://minio:9000 minioadmin minioadmin;
      /usr/bin/mc mb myminio/calendar-events --ignore-existing;
      /usr/bin/mc anonymous set public myminio/calendar-events;
      exit 0;
      "
    networks:
      - docker-mudblazor

  adminer:
    image: adminer:latest
    container_name: docker-mudblazor.adminer    
    networks:
      - docker-mudblazor
    ports:
      # <Host Port>:<Container Port>
      - "8080:8080"

Tag summary

Content type

Image

Digest

sha256:fefb44bcb…

Size

112.5 MB

Last updated

4 months ago

docker pull ivoraedts/hello-docker-mudblazor