LordChaos82,
@LordChaos82@fosstodon.org avatar

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

Dirk,
@Dirk@lemmy.ml avatar

Don’t add the mount in the container. Just open Portainer, go to your container, click “Duplicate/Edit”, scroll down, and do this:

https://lemmy.ml/pictrs/image/72677378-b456-487a-98da-5662129fd075.png

LordChaos82,
@LordChaos82@fosstodon.org avatar

@Dirk thanks. That's how I did it but I am not sure if updating using docker compose would overwrite it. Portainer is running on a VM so I will make sure to snapshot it and try so I can restore it if needed.

Dirk,
@Dirk@lemmy.ml avatar

You’re using Portainer, why manually mess with docker compose?

chiisana,
@chiisana@lemmy.chiisana.net avatar

You’d mount the volume in the docker-compose.yml using the volumes: node.

You can try to automatically generate the compose file via this command:


<span style="color:#323232;">docker run --rm 
</span><span style="color:#323232;">    -v /var/run/docker.sock:/var/run/docker.sock:ro 
</span><span style="color:#323232;">    ghcr.io/red5d/docker-autocompose 
</span><span style="color:#323232;">    your-current-container-name-or-id-goes-here 
</span><span style="color:#323232;">    another-container-should-there-be-more-than-one
</span>
portainerio,
@portainerio@mastodon.online avatar

@LordChaos82 @selfhosted you can create a compose file, and in it, state the volumes are external (so compose knows to reuse existing volumes).

Catsrules,

You can just mount the SMB volume using docker-compose.

I think have some example compose files if you need some example.

LordChaos82,
@LordChaos82@fosstodon.org avatar

@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,

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 github.com/immich-app/…/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


<span style="color:#323232;">version: "3.8"
</span><span style="color:#323232;">
</span><span style="color:#323232;">services:
</span><span style="color:#323232;">  immich-server:
</span><span style="color:#323232;">    container_name: immich_server
</span><span style="color:#323232;">    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
</span><span style="color:#323232;">    command: [ "start.sh", "immich" ]
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">      - ${UPLOAD_LOCATION}:/usr/src/app/upload
</span><span style="color:#323232;">    env_file:
</span><span style="color:#323232;">      - .env
</span><span style="color:#323232;">    depends_on:
</span><span style="color:#323232;">      - redis
</span><span style="color:#323232;">      - database
</span><span style="color:#323232;">      - typesense
</span><span style="color:#323232;">    restart: always
</span><span style="color:#323232;">
</span><span style="color:#323232;">  immich-microservices:
</span><span style="color:#323232;">    container_name: immich_microservices
</span><span style="color:#323232;">    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
</span><span style="color:#323232;">    # extends:
</span><span style="color:#323232;">    #   file: hwaccel.yml
</span><span style="color:#323232;">    #   service: hwaccel
</span><span style="color:#323232;">    command: [ "start.sh", "microservices" ]
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">      - ${UPLOAD_LOCATION}:/usr/src/app/upload
</span><span style="color:#323232;">    env_file:
</span><span style="color:#323232;">      - .env
</span><span style="color:#323232;">    depends_on:
</span><span style="color:#323232;">      - redis
</span><span style="color:#323232;">      - database
</span><span style="color:#323232;">      - typesense
</span><span style="color:#323232;">    restart: always
</span><span style="color:#323232;">
</span><span style="color:#323232;">  immich-machine-learning:
</span><span style="color:#323232;">    container_name: immich_machine_learning
</span><span style="color:#323232;">    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">      - model-cache:/cache
</span><span style="color:#323232;">    env_file:
</span><span style="color:#323232;">      - .env
</span><span style="color:#323232;">    restart: always
</span><span style="color:#323232;">
</span><span style="color:#323232;">  immich-web:
</span><span style="color:#323232;">    container_name: immich_web
</span><span style="color:#323232;">    image: ghcr.io/immich-app/immich-web:${IMMICH_VERSION:-release}
</span><span style="color:#323232;">    env_file:
</span><span style="color:#323232;">      - .env
</span><span style="color:#323232;">    restart: always
</span><span style="color:#323232;">
</span><span style="color:#323232;">  typesense:
</span><span style="color:#323232;">    container_name: immich_typesense
</span><span style="color:#323232;">    image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd
</span><span style="color:#323232;">    environment:
</span><span style="color:#323232;">      - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
</span><span style="color:#323232;">      - TYPESENSE_DATA_DIR=/data
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">      - tsdata:/data
</span><span style="color:#323232;">    restart: always
</span><span style="color:#323232;">
</span><span style="color:#323232;">  redis:
</span><span style="color:#323232;">    container_name: immich_redis
</span><span style="color:#323232;">    image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3
</span><span style="color:#323232;">    restart: always
</span><span style="color:#323232;">
</span><span style="color:#323232;">  database:
</span><span style="color:#323232;">    container_name: immich_postgres
</span><span style="color:#323232;">    image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441
</span><span style="color:#323232;">    env_file:
</span><span style="color:#323232;">      - .env
</span><span style="color:#323232;">    environment:
</span><span style="color:#323232;">      POSTGRES_PASSWORD: ${DB_PASSWORD}
</span><span style="color:#323232;">      POSTGRES_USER: ${DB_USERNAME}
</span><span style="color:#323232;">      POSTGRES_DB: ${DB_DATABASE_NAME}
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">      - pgdata:/var/lib/postgresql/data
</span><span style="color:#323232;">    restart: always
</span><span style="color:#323232;">
</span><span style="color:#323232;">  immich-proxy:
</span><span style="color:#323232;">    container_name: immich_proxy
</span><span style="color:#323232;">    image: ghcr.io/immich-app/immich-proxy:${IMMICH_VERSION:-release}
</span><span style="color:#323232;">    environment:
</span><span style="color:#323232;">      # Make sure these values get passed through from the env file
</span><span style="color:#323232;">      - IMMICH_SERVER_URL
</span><span style="color:#323232;">      - IMMICH_WEB_URL
</span><span style="color:#323232;">    ports:
</span><span style="color:#323232;">      - 2283:8080
</span><span style="color:#323232;">    depends_on:
</span><span style="color:#323232;">      - immich-server
</span><span style="color:#323232;">      - immich-web
</span><span style="color:#323232;">    restart: always
</span><span style="color:#323232;">
</span><span style="color:#323232;">volumes:
</span><span style="color:#323232;">  pgdata:
</span><span style="color:#323232;">  model-cache:
</span><span style="color:#323232;">  tsdata:
</span><span style="color:#323232;">  upload-volume:
</span><span style="color:#323232;">    driver: local
</span><span style="color:#323232;">    driver_opts:
</span><span style="color:#323232;">      type: cifs
</span><span style="color:#323232;">      device: "//172.1.1.6/changetoshare"
</span><span style="color:#323232;">      o: addr=172.1.1.6,username=changetouser,password=changeme,vers=2.0,uid=1000,gid=1000
</span>
  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • uselessserver093
  • Food
  • aaaaaaacccccccce
  • [email protected]
  • test
  • CafeMeta
  • testmag
  • MUD
  • RhythmGameZone
  • RSS
  • dabs
  • Socialism
  • KbinCafe
  • TheResearchGuardian
  • oklahoma
  • feritale
  • SuperSentai
  • KamenRider
  • All magazines