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.