I have a docker container running in portainer. I have added an SMB volume to the container. Does anyone know how I can update this docker container using docker-compose without undoing my changes? Thanks
@selfhosted @Docker @portainerio

  • LordChaos82@fosstodon.orgOP
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    @Catsrules Thanks. This specific to Immich. The upload location in the docker-compose is picked from .env file. I, for the life of me, cannot figure out how to mount the portainer SMB volume in the .env file. What I ended up doing was to select the containers using the upload location and edit the volume to attach the SMB share volume from portainer. I hope what I said makes sense. I am just a newbie learning docker right now.

    • Catsrules
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      1 year ago

      I am kind of just making this up as I go along so odds are this won’t work but it will hopefully get you closer. I only modified the very end under the volumes from their default compose file here https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml

      You will need to change the IP address to the address of you SMB server as well as the user name and password your going to be using. You may need to change the uid and gid I think you want those to be the id of whatever user is running immich. 1000 is usually a good default if you don’t know.

      In the .env file try just putting in upload-volume as the upload location. Like this

      UPLOAD_LOCATION=upload-volume

      Oh I almost forgot your host computer (the one running docker) needs to have cifs-utils installed or the cifs volume will not work and you will get a bunch of errors (Ask me how I know).

      Modified Compose file

      version: "3.8"
      
      services:
        immich-server:
          container_name: immich_server
          image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
          command: [ "start.sh", "immich" ]
          volumes:
            - ${UPLOAD_LOCATION}:/usr/src/app/upload
          env_file:
            - .env
          depends_on:
            - redis
            - database
            - typesense
          restart: always
      
        immich-microservices:
          container_name: immich_microservices
          image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
          # extends:
          #   file: hwaccel.yml
          #   service: hwaccel
          command: [ "start.sh", "microservices" ]
          volumes:
            - ${UPLOAD_LOCATION}:/usr/src/app/upload
          env_file:
            - .env
          depends_on:
            - redis
            - database
            - typesense
          restart: always
      
        immich-machine-learning:
          container_name: immich_machine_learning
          image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
          volumes:
            - model-cache:/cache
          env_file:
            - .env
          restart: always
      
        immich-web:
          container_name: immich_web
          image: ghcr.io/immich-app/immich-web:${IMMICH_VERSION:-release}
          env_file:
            - .env
          restart: always
      
        typesense:
          container_name: immich_typesense
          image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd
          environment:
            - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
            - TYPESENSE_DATA_DIR=/data
          volumes:
            - tsdata:/data
          restart: always
      
        redis:
          container_name: immich_redis
          image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3
          restart: always
      
        database:
          container_name: immich_postgres
          image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441
          env_file:
            - .env
          environment:
            POSTGRES_PASSWORD: ${DB_PASSWORD}
            POSTGRES_USER: ${DB_USERNAME}
            POSTGRES_DB: ${DB_DATABASE_NAME}
          volumes:
            - pgdata:/var/lib/postgresql/data
          restart: always
      
        immich-proxy:
          container_name: immich_proxy
          image: ghcr.io/immich-app/immich-proxy:${IMMICH_VERSION:-release}
          environment:
            # Make sure these values get passed through from the env file
            - IMMICH_SERVER_URL
            - IMMICH_WEB_URL
          ports:
            - 2283:8080
          depends_on:
            - immich-server
            - immich-web
          restart: always
      
      volumes:
        pgdata:
        model-cache:
        tsdata:
        upload-volume:
          driver: local
          driver_opts:
            type: cifs
            device: "//172.1.1.6/changetoshare"
            o: addr=172.1.1.6,username=changetouser,password=changeme,vers=2.0,uid=1000,gid=1000
      
      • LordChaos82@fosstodon.orgOP
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        @Catsrules Thank you. I will take a backup of the portainer VM and give it a try in case I screw things up. Thanks for your effort in writing the compose file. I appreciate it.