Hi, It’s configurable now (you have the option to use internal volume or not).
Regards JB > Le 8 avr. 2020 à 09:30, Gerald Kallas <[email protected]> a écrit : > > Yep. AFAIK the docker:provision puts all karaf directories on the host VM. > That's the reason why we're doing it manually. Am I right with this? > >> Jean-Baptiste Onofre <[email protected]> hat am 8. April 2020 07:23 >> geschrieben: >> >> >> It’s more or less what docker:provision is doing ;) >> >> Regards >> JB >> >>> Le 7 avr. 2020 à 17:52, Gerald Kallas <[email protected]> a écrit : >>> >>> Hi, that's the way I did w/ Camel on Karaf >>> >>> 1. Start karaf >>> >>> cd /opt >>> unzip /home/karaf/apache-karaf-4.2.7.zip >>> ln -s /opt/apache-karaf* /opt/apache-karaf >>> cd apache-karaf/bin >>> ./karaf >>> >>> 2. Install the needed features (in a 2nd SSH session) >>> >>> cd /opt/apache-karaf/bin >>> ./client < karaf.sh >>> >>> karaf.sh looks like >>> >>> feature:repo-add hawtio 2.9.1 >>> feature:repo-add activemq 5.15.11 >>> feature:repo-add camel 3.1.0 >>> feature:install webconsole hawtio activemq-broker-noweb camel camel-jms jms >>> camel-http camel-jetty camel-swagger-java camel-ftp camel-jackson >>> camel-jsonpath camel-zipfile camel-velocity camel-groovy >>> >>> 3. Package the archive file of the ready-to-run karaf >>> >>> ^D >>> tar -czvf apache-karaf-4.2.7-camel-3.0.1.tgz apache-karaf-4.2.7 >>> cp apache-karaf apache-karaf-4.2.7-apache-camel-3.0.1.tgz /home/karaf >>> >>> 4. Build the docker container based on the created archive, the Dockerfile >>> and docker-compose >>> >>> docker-compose up --build -d >>> >>> Dockerfile looks like >>> >>> FROM openjdk:8-jre >>> >>> # Set karaf environment variables >>> ENV KARAF_INSTALL_PATH /opt >>> ENV KARAF_HOME $KARAF_INSTALL_PATH/apache-karaf >>> ENV PATH $PATH:$KARAF_HOME/bin >>> >>> # The karaf_dist can point to a directory or a tarball on the local system >>> ARG karaf_dist=apache-karaf-4.2.7-camel-3.0.1.tgz >>> >>> # Install build dependencies and karaf >>> ADD $karaf_dist $KARAF_INSTALL_PATH >>> RUN set -x && \ >>> ln -s $KARAF_INSTALL_PATH/apache-karaf* $KARAF_HOME >>> >>> # Create karaf user >>> RUN groupadd --gid 2000 karaf && \ >>> useradd --uid 2000 --create-home --home-dir /var/karaf --gid karaf karaf >>> >>> # Set user permissions >>> RUN mkdir -p /var/karaf/files && \ >>> mkdir /opt/apache-karaf/templates && \ >>> chown -R karaf:karaf /var/karaf && \ >>> chown -R karaf:karaf /opt/apache-karaf* >>> >>> EXPOSE 8101 1099 44444 8181 8443 >>> USER karaf >>> CMD ["karaf", "run"] >>> >>> docker-compose looks like >>> >>> services: >>> karaf: >>> container_name: karaf >>> user: "2000" >>> build: . >>> restart: unless-stopped >>> network_mode: bridge >>> ports: >>> - "8101:8101" >>> - "1099:1099" >>> - "44444:44444" >>> - "8181:8181" >>> - "8443:8443" >>> - "8182:8182" >>> - "8444:8444" >>> volumes: >>> - /var/karaf/etc:/opt/apache-karaf/etc >>> - /var/karaf/deploy:/opt/apache-karaf/deploy >>> - /var/karaf/templates:/opt/apache-karaf/templates >>> - /var/karaf/files:/var/casisp/files >>> command: karaf >>> stdin_open: true >>> tty: true >>> >>> So far I'm exposing the 4 directories >>> >>> karaf/etc >>> karaf/deploy >>> karaf/templates (for Velocity templates we're using) >>> karaf/files (for file component consumer and producer) >>> >>> For me it works well. I've to do a little bit of improvement >>> >>> 1. The .m2 Maven directory isn't included yet within the container, so far >>> ist shows some warnings while starting offline >>> 2. Active MQ shows in offline start mode an error because one file is >>> missing >>> >>> Both I'm going to solve within the next couple of days. >>> >>> Best >>> - Gerald >>> >>>> Steinar Bang <[email protected]> hat am 7. April 2020 14:23 geschrieben: >>>> >>>> >>>>>>>>> Steinar Bang <[email protected]>: >>>> >>>>> Is there a way to flush what docker:provision has made? >>>> >>>> Yes. Use the "docker" command on the host (docker installed with >>>> "apt install docker.io" on a debian stable system): >>>> docker rm -vf $(docker ps -a -q) >>>> docker rmi -f $(docker images -a -q) >>>> >>>> Source: https://stackoverflow.com/a/44785784 >>>> >>>>> And is there a way to extract the image docker:provision has made and >>>>> make it into something that can be pushed to dockerhub? >>>> >>>> Yes. I did the following: >>>> 1. Created the repo ukelonn-demo on docker hub: >>>> https://hub.docker.com/repository/docker/steinarb/ukelonn-demo/tags?page=1 >>>> >>>> 2. Ran the commands above to clear out the local docker instance of all >>>> images >>>> >>>> 3. Logged the docker instance on my local machine (the one running both >>>> karaf and dockerd): >>>> docker login --username=yourhubusername [email protected] >>>> >>>> 4. In karaf, deleted the data directory to start fresh, started karaf >>>> and populated karaf with features, and provisioned the running karaf >>>> (note: this requires my own maven repo, and karaf already had that): >>>> feature:repo-add mvn:no.priv.bang.ukelonn/karaf/LATEST/xml/features >>>> feature:install ukelonn-with-derby >>>> feature:install docker >>>> docker:provision ukelonn-demo >>>> >>>> 5. Ran "docker images" to find the id of the provisioned karaf instance >>>> (at this point it was the only image in the local docker) >>>> sb@lorenzo:~$ docker images >>>> REPOSITORY TAG IMAGE ID CREATED >>>> SIZE >>>> java 8-jre-alpine fdc893b19a14 3 years >>>> ago 108MB >>>> sb@lorenzo:~$ >>>> >>>> 6. Created a tag using my dockerhub username, the name of the repo I'd >>>> created and the date and time of day: >>>> sb@lorenzo:~$ docker tag fdc893b19a14 steinarb/ukelonn-demo:202004071205 >>>> sb@lorenzo:~$ >>>> >>>> 7. Pushed the tag to docker hub: >>>> sb@lorenzo:~$ docker push steinarb/ukelonn-demo:202004071205 >>>> The push refers to repository [docker.io/steinarb/ukelonn-demo] >>>> 20dd87a4c2ab: Mounted from library/java >>>> 78075328e0da: Mounted from library/java >>>> 9f8566ee5135: Mounted from library/java >>>> 202004071205: digest: >>>> sha256:6a8cbe4335d1a5711a52912b684e30d6dbfab681a6733440ff7241b05a5deefd >>>> size: 947 >>>> sb@lorenzo:~$ >>>> >>>> 8. Opened https://labs.play-with-docker.com in a web browser and >>>> clicked on "Start" >>>> >>>> 9. In the command shell, pulled the image from docker hub: >>>> docker pull steinarb/ukelonn-demo:202004071205 >>>> >>>> 10. Tried running the image, but that failed with "no command specified": >>>> [node1] (local) [email protected] ~ >>>> $ docker run -p 8101:8101 -p 8181:8181 >>>> steinarb/ukelonn-demo:202004071205 >>>> docker: Error response from daemon: No command specified. >>>> See 'docker run --help'. >>>> [node1] (local) [email protected] ~ >>>> $ >>>> >>>> So I'm not all the way yet, but I'm getting closer. >>>> >>>> Source for the docker hub related docker commands: >>>> https://ropenscilabs.github.io/r-docker-tutorial/04-Dockerhub.html >>>> >>>>> Or do I need to look at more traditional docker image building, using a >>>>> Dockerfile? >>>> >>>> Possibly...? At least if I want to automate the build of docker images. >>>> >>>> But for now it's interesting to see how far I can get just by playing >>>> with some commands.
