I'm unable to mount a host directory (on a rasberry pi) to a docker container api_service. Even with host chmod -R 777.
I was able to mount it running the api_service from commandline docker start --mount type=bind,src=/data/yarmp-data,target=/data/yarmp-data docker_api_service_1 and docker inspect containerId in this case the mount section was telling me the mount was done and inside the container it was the case. But I'd like to achieve that with docker-compose.
I tried different syntaxes into the docker-compose.yaml file but never achieving it. Every time removing all containers, images, then docker-compose build and docker-compose up.
What am I missing? is there a way to trace the mount options at startup of the container? Should the target directory have been created into the target image before mounting it on docker-compose.yaml?
docker-compose.yaml
#Doc: https://github.com/compose-spec/compose-spec/blob/master/spec.md version: '3.2' services: api_service: build: ./api_service restart: always ports: - target: 8080 published: 8080 depends_on: - postgres_db links: - postgres_db:yarmp-db-host # database is postgres_db hostname into this api_service volumes: - type: bind source: $HOST/data/yarmp-data #Host with this version not working source: /data/yarmp-data #Host absolute path not working #source: ./mount-test #not working either target: /data/yarmp-data #- /data/yarmp-data:/data/yarmp-data # not working either postgres_db: build: ./postgres_db restart: always ports: - target: 5432 published: 5432 env_file: - postgres_db/pg-db-database.env # configure postgres volumes: - database-data:/var/lib/postgresql/data/ postgres_db/Dockerfile
FROM postgres:latest LABEL maintainer="[email protected]" RUN mkdir -p /docker-entrypoint-initdb.d COPY yarmp-dump.sql /docker-entrypoint-initdb.d/ api_service/Dockerfile
FROM arm32v7/adoptopenjdk LABEL maintainer="[email protected]" RUN apt-get update RUN apt-get -y install git curl vim CMD ["/bin/bash"] #csv files data RUN mkdir -p /data/yarmp-data #Should I create it or not?? RUN mkdir -p /main-app WORKDIR /main-app # JAVA APP DATA ADD my-api-0.0.1-SNAPSHOT.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar","/main-app/app.jar"]
-type: bindindented correctly? Is this just an issue with the SO post or is this how it's indented when running it?docker inspected a working non-Compose setup, how is the Compose-based installation different? Docker will automatically create the target directory if it doesn't exist (and, for that matter, the host directory too) and you don't need to explicitlyRUN mkdirit.docker inspectis"Mounts": [],-defines an item in a list, but all those are keys in that item. The trick with YAML is if you indent too little or too much, you end up with adding to either the list's parent or adding to the previous line's value instead of creating a new key-value.