)]}'
{"docker/Dockerfile":[{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"003215bd8c0522deb2900df38527b7e69f7999e7","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"RUN apk update \u0026\u0026 \\"},{"line_number":12,"context_line":"    apk add --no-cache ca-certificates tini \u0026\u0026 \\"},{"line_number":13,"context_line":"    pip install pykafka \u0026\u0026 \\"},{"line_number":14,"context_line":"    rm -rf /var/cache/apk/*"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"ENTRYPOINT [\"/sbin/tini\", \"-s\", \"--\"]"}],"source_content_type":"text/x-dockerfile","patch_set":6,"id":"5f7c97a3_39493030","line":13,"updated":"2018-05-14 08:24:27.000000000","message":"I think would be better to install specific Kafka version.","commit_id":"be61bbc8f963e201cdbac27b04e642f18a5b732d"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"d3f4da3a7348aff264134e04777adc00df3000e4","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"RUN apk update \u0026\u0026 \\"},{"line_number":12,"context_line":"    apk add --no-cache ca-certificates tini \u0026\u0026 \\"},{"line_number":13,"context_line":"    pip install pykafka \u0026\u0026 \\"},{"line_number":14,"context_line":"    rm -rf /var/cache/apk/*"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"ENTRYPOINT [\"/sbin/tini\", \"-s\", \"--\"]"}],"source_content_type":"text/x-dockerfile","patch_set":6,"id":"5f7c97a3_253a5fcb","line":13,"in_reply_to":"5f7c97a3_39493030","updated":"2018-05-14 11:00:22.000000000","message":"Done","commit_id":"be61bbc8f963e201cdbac27b04e642f18a5b732d"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"8b1bce3cb61e0331de178de90cf70c9fc8078562","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"5f7c97a3_fb9d7ebb","updated":"2018-06-05 15:06:11.000000000","message":"Will this be the \"base image\" for all Monasca-images based on python and \"monasca-common\")?\nsee docker/example/Dockerfile line 11: \"FROM monasca-base:latest\"\n\nhttps://docs.docker.com/v17.09/engine/userguide/eng-image/baseimages/\n\"A base image either has no FROM line in its Dockerfile, or has FROM scratch.\"\n\nWhat about other Monasca-components like log-transformer?\n\nA comment would be helpful...","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"443610470cc827e0061e57a77324bcf157fe7670","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"5f7c97a3_9185340a","in_reply_to":"5f7c97a3_2623c4c0","updated":"2018-06-06 13:05:01.000000000","message":"I\u0027m absolutly fine with using the official Python image ...I just wanted to say that this is not the base image for ALL Monasca docker images...\nA comment would be helpful. Also about stuff which is included like kafka client...My first assumption was that all stuff from https://github.com/openstack/monasca-common is included in this base image...","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"b1fd491596b93a3b6efa4a24565a384120df7bf8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"5f7c97a3_f21fc6b4","in_reply_to":"5f7c97a3_9185340a","updated":"2018-06-06 14:23:04.000000000","message":"I think it is a good idea to enforce the HEALTHCHECK feature for all child images...\n\nONBUILD HEALTHCHECK --interval\u003d5m --timeout\u003d3s \\\n  CMD /health-check.sh\n\n...","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"5fd441bc59e0f7842adeffffc5bd45b9cdf08265","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"5f7c97a3_e79cca5c","in_reply_to":"5f7c97a3_9185340a","updated":"2018-06-07 12:21:00.000000000","message":"That\u0027s good idea. Working now on including monasca-common inside it.","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"5fd441bc59e0f7842adeffffc5bd45b9cdf08265","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"5f7c97a3_67bafac0","in_reply_to":"5f7c97a3_f21fc6b4","updated":"2018-06-07 12:21:00.000000000","message":"Not sure if it will work properly, will need testing but good idea.","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"a0ddd0dfba16a5a39b2998959a8342cdde987c28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"5f7c97a3_2623c4c0","in_reply_to":"5f7c97a3_fb9d7ebb","updated":"2018-06-06 12:11:46.000000000","message":"I\u0027m going from official Python image because they already have hardened (used in production) image and have already fixed many problems inside (like stack problem).\n\nWill need to think how to handle stuff like log-transformer. Good catch.","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"8b1bce3cb61e0331de178de90cf70c9fc8078562","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"RUN \\"},{"line_number":13,"context_line":"    chmod +x /wait_for.sh /kafka_wait_for_topics.py \u0026\u0026 \\"},{"line_number":14,"context_line":"    apk update \u0026\u0026 \\"},{"line_number":15,"context_line":"    apk add --no-cache \\"},{"line_number":16,"context_line":"        ca-certificates su-exec tini tzdata \u0026\u0026 \\"},{"line_number":17,"context_line":"    pip install \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_9b3eca89","line":14,"range":{"start_line":14,"start_character":4,"end_line":14,"end_character":15},"updated":"2018-06-05 15:06:11.000000000","message":"https://docs.docker.com/v17.09/engine/userguide/eng-image/dockerfile_best-practices/#run\n\n\"You should avoid RUN apt-get upgrade or dist-upgrade, as many of the “essential” packages from the parent images won’t upgrade inside an unprivileged container. If a package contained in the parent image is out-of-date, you should contact its maintainers. \"","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"a0ddd0dfba16a5a39b2998959a8342cdde987c28","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"RUN \\"},{"line_number":13,"context_line":"    chmod +x /wait_for.sh /kafka_wait_for_topics.py \u0026\u0026 \\"},{"line_number":14,"context_line":"    apk update \u0026\u0026 \\"},{"line_number":15,"context_line":"    apk add --no-cache \\"},{"line_number":16,"context_line":"        ca-certificates su-exec tini tzdata \u0026\u0026 \\"},{"line_number":17,"context_line":"    pip install \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_461e0075","line":14,"range":{"start_line":14,"start_character":4,"end_line":14,"end_character":15},"in_reply_to":"5f7c97a3_9b3eca89","updated":"2018-06-06 12:11:46.000000000","message":"Done","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"e42661acea0ad1ba985188696db259d6a9e49878","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    chmod +x /wait_for.sh /kafka_wait_for_topics.py \u0026\u0026 \\"},{"line_number":14,"context_line":"    apk update \u0026\u0026 \\"},{"line_number":15,"context_line":"    apk add --no-cache \\"},{"line_number":16,"context_line":"        ca-certificates su-exec tini tzdata \u0026\u0026 \\"},{"line_number":17,"context_line":"    pip install \\"},{"line_number":18,"context_line":"        pykafka\u003d\u003d2.7.0 \\"},{"line_number":19,"context_line":"        Templer\u003d\u003d1.1.4 \u0026\u0026 \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_1ddb7b7d","line":16,"range":{"start_line":16,"start_character":8,"end_line":16,"end_character":43},"updated":"2018-06-06 09:09:12.000000000","message":"https://docs.docker.com/v17.09/engine/userguide/eng-image/dockerfile_best-practices/#sort-multi-line-arguments","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"b2cadd29e442dc3f9a9981814b13ab90315c62a6","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    chmod +x /wait_for.sh /kafka_wait_for_topics.py \u0026\u0026 \\"},{"line_number":14,"context_line":"    apk update \u0026\u0026 \\"},{"line_number":15,"context_line":"    apk add --no-cache \\"},{"line_number":16,"context_line":"        ca-certificates su-exec tini tzdata \u0026\u0026 \\"},{"line_number":17,"context_line":"    pip install \\"},{"line_number":18,"context_line":"        pykafka\u003d\u003d2.7.0 \\"},{"line_number":19,"context_line":"        Templer\u003d\u003d1.1.4 \u0026\u0026 \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_7545e942","line":16,"range":{"start_line":16,"start_character":8,"end_line":16,"end_character":43},"updated":"2018-06-06 08:36:05.000000000","message":"shouldn\u0027t we use explicit versions?","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"a0ddd0dfba16a5a39b2998959a8342cdde987c28","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    chmod +x /wait_for.sh /kafka_wait_for_topics.py \u0026\u0026 \\"},{"line_number":14,"context_line":"    apk update \u0026\u0026 \\"},{"line_number":15,"context_line":"    apk add --no-cache \\"},{"line_number":16,"context_line":"        ca-certificates su-exec tini tzdata \u0026\u0026 \\"},{"line_number":17,"context_line":"    pip install \\"},{"line_number":18,"context_line":"        pykafka\u003d\u003d2.7.0 \\"},{"line_number":19,"context_line":"        Templer\u003d\u003d1.1.4 \u0026\u0026 \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_260c2441","line":16,"range":{"start_line":16,"start_character":8,"end_line":16,"end_character":43},"in_reply_to":"5f7c97a3_1ddb7b7d","updated":"2018-06-06 12:11:46.000000000","message":"Will add versions closer to merging. Hadolint is still complaining about it so we won\u0027t forget.","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"8b1bce3cb61e0331de178de90cf70c9fc8078562","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    rm -rf /var/log/*"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Get values from child images"},{"line_number":25,"context_line":"ONBUILD ARG REPO_PATH"},{"line_number":26,"context_line":"ONBUILD ARG VERSION"},{"line_number":27,"context_line":"ONBUILD ARG CONSTRAINTS_BRANCH"},{"line_number":28,"context_line":"ONBUILD ARG CONSTRAINTS_PATH\u003dhttp://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt"},{"line_number":29,"context_line":"ONBUILD ARG EXTRA_DEPS"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Only needed if we want to persist the value that was used in the image\u0027s `env`."},{"line_number":32,"context_line":"# ONBUILD ENV REPO_PATH\u003d$REPO_PATH"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_bb114607","line":29,"range":{"start_line":25,"start_character":0,"end_line":29,"end_character":22},"updated":"2018-06-05 15:06:11.000000000","message":"The LABEL instruction could be used to add metadata to an image. e.g. LABEL version\u003d\"master\"... \nhttps://docs.docker.com/v17.09/engine/reference/builder/#label","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"443610470cc827e0061e57a77324bcf157fe7670","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    rm -rf /var/log/*"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Get values from child images"},{"line_number":25,"context_line":"ONBUILD ARG REPO_PATH"},{"line_number":26,"context_line":"ONBUILD ARG VERSION"},{"line_number":27,"context_line":"ONBUILD ARG CONSTRAINTS_BRANCH"},{"line_number":28,"context_line":"ONBUILD ARG CONSTRAINTS_PATH\u003dhttp://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt"},{"line_number":29,"context_line":"ONBUILD ARG EXTRA_DEPS"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Only needed if we want to persist the value that was used in the image\u0027s `env`."},{"line_number":32,"context_line":"# ONBUILD ENV REPO_PATH\u003d$REPO_PATH"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_acfd7309","line":29,"range":{"start_line":25,"start_character":0,"end_line":29,"end_character":22},"in_reply_to":"5f7c97a3_7107381a","updated":"2018-06-06 13:05:01.000000000","message":"we will have such a script for each image? Wouldn\u0027t it be better to have the labeling in one central place (direct instead of indirect) in the dockerfile of the \"base image\"?\n\nI\u0027m not sure about the need for \"build_image.sh\"...labeling only?","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ab55d2d9a9f014342df845055460aea46ed987a5","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    rm -rf /var/log/*"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Get values from child images"},{"line_number":25,"context_line":"ONBUILD ARG REPO_PATH"},{"line_number":26,"context_line":"ONBUILD ARG VERSION"},{"line_number":27,"context_line":"ONBUILD ARG CONSTRAINTS_BRANCH"},{"line_number":28,"context_line":"ONBUILD ARG CONSTRAINTS_PATH\u003dhttp://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt"},{"line_number":29,"context_line":"ONBUILD ARG EXTRA_DEPS"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Only needed if we want to persist the value that was used in the image\u0027s `env`."},{"line_number":32,"context_line":"# ONBUILD ENV REPO_PATH\u003d$REPO_PATH"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_674f5a6a","line":29,"range":{"start_line":25,"start_character":0,"end_line":29,"end_character":22},"in_reply_to":"5f7c97a3_acfd7309","updated":"2018-06-07 12:00:29.000000000","message":"I wanted to do that at the beginning but found out that to propagate labels with dynamic data (like commit hash, date of build, repo path used for build, used constraints file) you need to provide them to `docker build` command at build time. It\u0027s impossible to get them out of image at build time. \n\nI think we can move inside `Dockerfile` some static labels like:\n- org.opencontainers.image.url (with link to github.com repo)\n- org.opencontainers.image.title (with image/service name)\n- org.opencontainers.image.licenses\n\nUnfortunately rest need to be provided at build time and I don\u0027t want to retype them every time.","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"a0ddd0dfba16a5a39b2998959a8342cdde987c28","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    rm -rf /var/log/*"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Get values from child images"},{"line_number":25,"context_line":"ONBUILD ARG REPO_PATH"},{"line_number":26,"context_line":"ONBUILD ARG VERSION"},{"line_number":27,"context_line":"ONBUILD ARG CONSTRAINTS_BRANCH"},{"line_number":28,"context_line":"ONBUILD ARG CONSTRAINTS_PATH\u003dhttp://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt"},{"line_number":29,"context_line":"ONBUILD ARG EXTRA_DEPS"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Only needed if we want to persist the value that was used in the image\u0027s `env`."},{"line_number":32,"context_line":"# ONBUILD ENV REPO_PATH\u003d$REPO_PATH"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_7107381a","line":29,"range":{"start_line":25,"start_character":0,"end_line":29,"end_character":22},"in_reply_to":"5f7c97a3_bb114607","updated":"2018-06-06 12:11:46.000000000","message":"Check docker/example/build_image.sh. It\u0027s still not fully ready but something similar will be added to build base image.","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"e42661acea0ad1ba985188696db259d6a9e49878","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"ONBUILD RUN \\"},{"line_number":37,"context_line":"            apk add --no-cache --virtual .build-deps \\"},{"line_number":38,"context_line":"                git make g++ linux-headers \u0026\u0026 \\"},{"line_number":39,"context_line":"            git clone $REPO_PATH . \u0026\u0026 \\"},{"line_number":40,"context_line":"            git reset --hard $VERSION \u0026\u0026 \\"},{"line_number":41,"context_line":"            pip3 install \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_3dd67755","line":38,"range":{"start_line":38,"start_character":16,"end_line":38,"end_character":42},"updated":"2018-06-06 09:09:12.000000000","message":"https://docs.docker.com/v17.09/engine/userguide/eng-image/dockerfile_best-practices/#sort-multi-line-arguments","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"b2cadd29e442dc3f9a9981814b13ab90315c62a6","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"ONBUILD RUN \\"},{"line_number":37,"context_line":"            apk add --no-cache --virtual .build-deps \\"},{"line_number":38,"context_line":"                git make g++ linux-headers \u0026\u0026 \\"},{"line_number":39,"context_line":"            git clone $REPO_PATH . \u0026\u0026 \\"},{"line_number":40,"context_line":"            git reset --hard $VERSION \u0026\u0026 \\"},{"line_number":41,"context_line":"            pip3 install \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_5561cdd2","line":38,"range":{"start_line":38,"start_character":16,"end_line":38,"end_character":42},"updated":"2018-06-06 08:36:05.000000000","message":"shouldn\u0027t we use explicit versions?","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"a0ddd0dfba16a5a39b2998959a8342cdde987c28","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"ONBUILD RUN \\"},{"line_number":37,"context_line":"            apk add --no-cache --virtual .build-deps \\"},{"line_number":38,"context_line":"                git make g++ linux-headers \u0026\u0026 \\"},{"line_number":39,"context_line":"            git clone $REPO_PATH . \u0026\u0026 \\"},{"line_number":40,"context_line":"            git reset --hard $VERSION \u0026\u0026 \\"},{"line_number":41,"context_line":"            pip3 install \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_f148285d","line":38,"range":{"start_line":38,"start_character":16,"end_line":38,"end_character":42},"in_reply_to":"5f7c97a3_3dd67755","updated":"2018-06-06 12:11:46.000000000","message":"Done","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"443610470cc827e0061e57a77324bcf157fe7670","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"ONBUILD RUN \\"},{"line_number":37,"context_line":"            apk add --no-cache --virtual .build-deps \\"},{"line_number":38,"context_line":"                git make g++ linux-headers \u0026\u0026 \\"},{"line_number":39,"context_line":"            git clone $REPO_PATH . \u0026\u0026 \\"},{"line_number":40,"context_line":"            git reset --hard $VERSION \u0026\u0026 \\"},{"line_number":41,"context_line":"            pip3 install \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_4c8e1f33","line":38,"range":{"start_line":38,"start_character":16,"end_line":38,"end_character":42},"in_reply_to":"5f7c97a3_51355cda","updated":"2018-06-06 13:05:01.000000000","message":"and don\u0027t forget the sorting ;-)","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"a0ddd0dfba16a5a39b2998959a8342cdde987c28","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"ONBUILD RUN \\"},{"line_number":37,"context_line":"            apk add --no-cache --virtual .build-deps \\"},{"line_number":38,"context_line":"                git make g++ linux-headers \u0026\u0026 \\"},{"line_number":39,"context_line":"            git clone $REPO_PATH . \u0026\u0026 \\"},{"line_number":40,"context_line":"            git reset --hard $VERSION \u0026\u0026 \\"},{"line_number":41,"context_line":"            pip3 install \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_51355cda","line":38,"range":{"start_line":38,"start_character":16,"end_line":38,"end_character":42},"in_reply_to":"5f7c97a3_5561cdd2","updated":"2018-06-06 12:11:46.000000000","message":"Will add versions closer to merging. Hadolint is still complaining about it so we won\u0027t forget.","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"8b1bce3cb61e0331de178de90cf70c9fc8078562","unresolved":false,"context_lines":[{"line_number":36,"context_line":"ONBUILD RUN \\"},{"line_number":37,"context_line":"            apk add --no-cache --virtual .build-deps \\"},{"line_number":38,"context_line":"                git make g++ linux-headers \u0026\u0026 \\"},{"line_number":39,"context_line":"            git clone $REPO_PATH . \u0026\u0026 \\"},{"line_number":40,"context_line":"            git reset --hard $VERSION \u0026\u0026 \\"},{"line_number":41,"context_line":"            pip3 install \\"},{"line_number":42,"context_line":"                /app/. $EXTRA_DEPS \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_fb8c9e36","line":39,"range":{"start_line":39,"start_character":12,"end_line":39,"end_character":34},"updated":"2018-06-05 15:06:11.000000000","message":"will the clone be deleted from the image?","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"ab55d2d9a9f014342df845055460aea46ed987a5","unresolved":false,"context_lines":[{"line_number":36,"context_line":"ONBUILD RUN \\"},{"line_number":37,"context_line":"            apk add --no-cache --virtual .build-deps \\"},{"line_number":38,"context_line":"                git make g++ linux-headers \u0026\u0026 \\"},{"line_number":39,"context_line":"            git clone $REPO_PATH . \u0026\u0026 \\"},{"line_number":40,"context_line":"            git reset --hard $VERSION \u0026\u0026 \\"},{"line_number":41,"context_line":"            pip3 install \\"},{"line_number":42,"context_line":"                /app/. $EXTRA_DEPS \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_84fcf43e","line":39,"range":{"start_line":39,"start_character":12,"end_line":39,"end_character":34},"in_reply_to":"5f7c97a3_0cd4a7e8","updated":"2018-06-07 12:00:29.000000000","message":"Multi-stage builds are for compiled languages (like C++ or Go that generate binary files, best if statically linked). They provide no advantages for Python.","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"443610470cc827e0061e57a77324bcf157fe7670","unresolved":false,"context_lines":[{"line_number":36,"context_line":"ONBUILD RUN \\"},{"line_number":37,"context_line":"            apk add --no-cache --virtual .build-deps \\"},{"line_number":38,"context_line":"                git make g++ linux-headers \u0026\u0026 \\"},{"line_number":39,"context_line":"            git clone $REPO_PATH . \u0026\u0026 \\"},{"line_number":40,"context_line":"            git reset --hard $VERSION \u0026\u0026 \\"},{"line_number":41,"context_line":"            pip3 install \\"},{"line_number":42,"context_line":"                /app/. $EXTRA_DEPS \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_0cd4a7e8","line":39,"range":{"start_line":39,"start_character":12,"end_line":39,"end_character":34},"in_reply_to":"5f7c97a3_d1772c9f","updated":"2018-06-06 13:05:01.000000000","message":"we could use multi-stage images for dev and production...","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"a0ddd0dfba16a5a39b2998959a8342cdde987c28","unresolved":false,"context_lines":[{"line_number":36,"context_line":"ONBUILD RUN \\"},{"line_number":37,"context_line":"            apk add --no-cache --virtual .build-deps \\"},{"line_number":38,"context_line":"                git make g++ linux-headers \u0026\u0026 \\"},{"line_number":39,"context_line":"            git clone $REPO_PATH . \u0026\u0026 \\"},{"line_number":40,"context_line":"            git reset --hard $VERSION \u0026\u0026 \\"},{"line_number":41,"context_line":"            pip3 install \\"},{"line_number":42,"context_line":"                /app/. $EXTRA_DEPS \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_d1772c9f","line":39,"range":{"start_line":39,"start_character":12,"end_line":39,"end_character":34},"in_reply_to":"5f7c97a3_fb8c9e36","updated":"2018-06-06 12:11:46.000000000","message":"Yes, I\u0027m now still looking into it for development.","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"e42661acea0ad1ba985188696db259d6a9e49878","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            printf \"Version: %s\\n\" $VERSION \u003e\u003e /VERSIONS \u0026\u0026 \\"},{"line_number":47,"context_line":"            printf \"Revision: %s\\n\" `git rev-parse HEAD` \u003e\u003e /VERSIONS \u0026\u0026 \\"},{"line_number":48,"context_line":"            printf \"Constraints file: %s\\n\" $CONSTRAINTS_PATH?h\u003d$CONSTRAINTS_BRANCH \u003e\u003e /VERSIONS \u0026\u0026 \\"},{"line_number":49,"context_line":"            apk del .build-deps \u0026\u0026 \\"},{"line_number":50,"context_line":"            rm -rf /var/cache/apk/* \u0026\u0026 \\"},{"line_number":51,"context_line":"            rm -rf /tmp/* \u0026\u0026 \\"},{"line_number":52,"context_line":"            rm -rf /var/log/*"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"ENTRYPOINT [\"/sbin/tini\", \"-s\", \"--\"]"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_9d354bab","line":52,"range":{"start_line":49,"start_character":12,"end_line":52,"end_character":29},"updated":"2018-06-06 09:09:12.000000000","message":"should we use: apt-get clean ?","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"a0ddd0dfba16a5a39b2998959a8342cdde987c28","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            printf \"Version: %s\\n\" $VERSION \u003e\u003e /VERSIONS \u0026\u0026 \\"},{"line_number":47,"context_line":"            printf \"Revision: %s\\n\" `git rev-parse HEAD` \u003e\u003e /VERSIONS \u0026\u0026 \\"},{"line_number":48,"context_line":"            printf \"Constraints file: %s\\n\" $CONSTRAINTS_PATH?h\u003d$CONSTRAINTS_BRANCH \u003e\u003e /VERSIONS \u0026\u0026 \\"},{"line_number":49,"context_line":"            apk del .build-deps \u0026\u0026 \\"},{"line_number":50,"context_line":"            rm -rf /var/cache/apk/* \u0026\u0026 \\"},{"line_number":51,"context_line":"            rm -rf /tmp/* \u0026\u0026 \\"},{"line_number":52,"context_line":"            rm -rf /var/log/*"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"ENTRYPOINT [\"/sbin/tini\", \"-s\", \"--\"]"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_71a3b801","line":52,"range":{"start_line":49,"start_character":12,"end_line":52,"end_character":29},"in_reply_to":"5f7c97a3_9d354bab","updated":"2018-06-06 12:11:46.000000000","message":"There is not `apt-get` on Alpine but when we use `apk add --no-cache` then there is no cache created.","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[{"line_number":18,"context_line":"        tzdata\u003d2017c-r0 \u0026\u0026 \\"},{"line_number":19,"context_line":"    pip3 install \\"},{"line_number":20,"context_line":"        pykafka\u003d\u003d2.7.0 \\"},{"line_number":21,"context_line":"        PyMySQL\u003d\u003d\u003d0.8.1 \\"},{"line_number":22,"context_line":"        Templer\u003d\u003d1.1.4 \u0026\u0026 \\"},{"line_number":23,"context_line":"    rm -rf /var/cache/apk/* \u0026\u0026 \\"},{"line_number":24,"context_line":"    rm -rf /tmp/* \u0026\u0026 \\"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_431e7b0c","line":21,"range":{"start_line":21,"start_character":8,"end_line":21,"end_character":23},"updated":"2018-06-12 07:46:06.000000000","message":"why is this needed in the base image?\n- not all components need access to MySQL.\n- I can not see any MySQL waitscript?\n\nBTW: These wait scripts are just for the start phase, aren\u0027t they? What happens if kafka or MySQL is not reachable during run time? Will the container stop and restart?","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":18,"context_line":"        tzdata\u003d2017c-r0 \u0026\u0026 \\"},{"line_number":19,"context_line":"    pip3 install \\"},{"line_number":20,"context_line":"        pykafka\u003d\u003d2.7.0 \\"},{"line_number":21,"context_line":"        PyMySQL\u003d\u003d\u003d0.8.1 \\"},{"line_number":22,"context_line":"        Templer\u003d\u003d1.1.4 \u0026\u0026 \\"},{"line_number":23,"context_line":"    rm -rf /var/cache/apk/* \u0026\u0026 \\"},{"line_number":24,"context_line":"    rm -rf /tmp/* \u0026\u0026 \\"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_9013725c","line":21,"range":{"start_line":21,"start_character":8,"end_line":21,"end_character":23},"in_reply_to":"5f7c97a3_431e7b0c","updated":"2018-06-12 12:53:31.000000000","message":"Started adding MySQL wait script","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            rm -rf /tmp/* \u0026\u0026 \\"},{"line_number":83,"context_line":"            rm -rf /var/log/*"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"ONBUILD HEALTHCHECK CMD python3 healthcheck.py || exit 1"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"ENTRYPOINT [\"/sbin/tini\", \"-s\", \"--\"]"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_a3d2ef32","line":85,"range":{"start_line":85,"start_character":32,"end_line":85,"end_character":46},"updated":"2018-06-12 07:46:06.000000000","message":"shouldn\u0027 there be a ONBUILD COPY healthcheck.p / ?","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            rm -rf /tmp/* \u0026\u0026 \\"},{"line_number":83,"context_line":"            rm -rf /var/log/*"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"ONBUILD HEALTHCHECK CMD python3 healthcheck.py || exit 1"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"ENTRYPOINT [\"/sbin/tini\", \"-s\", \"--\"]"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_0d90a942","line":85,"range":{"start_line":85,"start_character":32,"end_line":85,"end_character":46},"in_reply_to":"5f7c97a3_a3d2ef32","updated":"2018-06-12 12:53:31.000000000","message":"Done","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"61b56c86540ee673555b8d54b6e6ed807e59d0e8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# Get values from child images"},{"line_number":29,"context_line":"ONBUILD ARG CREATION_TIME"},{"line_number":30,"context_line":"ONBUILD ARG DOCKER_IMAGE"},{"line_number":31,"context_line":"ONBUILD ARG REPO_PATH"},{"line_number":32,"context_line":"ONBUILD ARG GITHUB_REPO"},{"line_number":33,"context_line":"ONBUILD ARG REPO_VERSION"},{"line_number":34,"context_line":"ONBUILD ARG GIT_COMMIT"}],"source_content_type":"text/x-dockerfile","patch_set":35,"id":"5f7c97a3_492a9a7e","line":31,"range":{"start_line":31,"start_character":12,"end_line":31,"end_character":21},"updated":"2018-06-18 14:12:03.000000000","message":"In devstack we have a scheme *_REPO for variable names pointing to Git repositories. In our case we could name it APP_REPO. That would be generic enough and consistent with devstack naming, thus reducing confusion.","commit_id":"083c45253238d416e93f479a3979a6b787e1242f"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"a710e15aef264450d5ae7a24db94fd62f9522a88","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# Get values from child images"},{"line_number":29,"context_line":"ONBUILD ARG CREATION_TIME"},{"line_number":30,"context_line":"ONBUILD ARG DOCKER_IMAGE"},{"line_number":31,"context_line":"ONBUILD ARG REPO_PATH"},{"line_number":32,"context_line":"ONBUILD ARG GITHUB_REPO"},{"line_number":33,"context_line":"ONBUILD ARG REPO_VERSION"},{"line_number":34,"context_line":"ONBUILD ARG GIT_COMMIT"}],"source_content_type":"text/x-dockerfile","patch_set":35,"id":"5f7c97a3_d0fb2a78","line":31,"range":{"start_line":31,"start_character":12,"end_line":31,"end_character":21},"in_reply_to":"5f7c97a3_492a9a7e","updated":"2018-06-25 10:17:14.000000000","message":"Done","commit_id":"083c45253238d416e93f479a3979a6b787e1242f"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"61b56c86540ee673555b8d54b6e6ed807e59d0e8","unresolved":false,"context_lines":[{"line_number":29,"context_line":"ONBUILD ARG CREATION_TIME"},{"line_number":30,"context_line":"ONBUILD ARG DOCKER_IMAGE"},{"line_number":31,"context_line":"ONBUILD ARG REPO_PATH"},{"line_number":32,"context_line":"ONBUILD ARG GITHUB_REPO"},{"line_number":33,"context_line":"ONBUILD ARG REPO_VERSION"},{"line_number":34,"context_line":"ONBUILD ARG GIT_COMMIT"},{"line_number":35,"context_line":"ONBUILD ARG CONSTRAINTS_BRANCH"}],"source_content_type":"text/x-dockerfile","patch_set":35,"id":"5f7c97a3_09590234","line":32,"range":{"start_line":32,"start_character":12,"end_line":32,"end_character":23},"updated":"2018-06-18 14:12:03.000000000","message":"Why do we need it here?","commit_id":"083c45253238d416e93f479a3979a6b787e1242f"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"a710e15aef264450d5ae7a24db94fd62f9522a88","unresolved":false,"context_lines":[{"line_number":29,"context_line":"ONBUILD ARG CREATION_TIME"},{"line_number":30,"context_line":"ONBUILD ARG DOCKER_IMAGE"},{"line_number":31,"context_line":"ONBUILD ARG REPO_PATH"},{"line_number":32,"context_line":"ONBUILD ARG GITHUB_REPO"},{"line_number":33,"context_line":"ONBUILD ARG REPO_VERSION"},{"line_number":34,"context_line":"ONBUILD ARG GIT_COMMIT"},{"line_number":35,"context_line":"ONBUILD ARG CONSTRAINTS_BRANCH"}],"source_content_type":"text/x-dockerfile","patch_set":35,"id":"5f7c97a3_703fb621","line":32,"range":{"start_line":32,"start_character":12,"end_line":32,"end_character":23},"in_reply_to":"5f7c97a3_09590234","updated":"2018-06-25 10:17:14.000000000","message":"Here I\u0027m providing link to github repository because by default we should use https://git.openstack.org/openstack/monasca-api \nRight?","commit_id":"083c45253238d416e93f479a3979a6b787e1242f"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"61b56c86540ee673555b8d54b6e6ed807e59d0e8","unresolved":false,"context_lines":[{"line_number":30,"context_line":"ONBUILD ARG DOCKER_IMAGE"},{"line_number":31,"context_line":"ONBUILD ARG REPO_PATH"},{"line_number":32,"context_line":"ONBUILD ARG GITHUB_REPO"},{"line_number":33,"context_line":"ONBUILD ARG REPO_VERSION"},{"line_number":34,"context_line":"ONBUILD ARG GIT_COMMIT"},{"line_number":35,"context_line":"ONBUILD ARG CONSTRAINTS_BRANCH"},{"line_number":36,"context_line":"ONBUILD ARG CONSTRAINTS_PATH\u003dhttp://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt"}],"source_content_type":"text/x-dockerfile","patch_set":35,"id":"5f7c97a3_0924a2ae","line":33,"range":{"start_line":33,"start_character":12,"end_line":33,"end_character":24},"updated":"2018-06-18 14:12:03.000000000","message":"Following devstack naming scheme could be APP_BRANCH.","commit_id":"083c45253238d416e93f479a3979a6b787e1242f"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"61b56c86540ee673555b8d54b6e6ed807e59d0e8","unresolved":false,"context_lines":[{"line_number":31,"context_line":"ONBUILD ARG REPO_PATH"},{"line_number":32,"context_line":"ONBUILD ARG GITHUB_REPO"},{"line_number":33,"context_line":"ONBUILD ARG REPO_VERSION"},{"line_number":34,"context_line":"ONBUILD ARG GIT_COMMIT"},{"line_number":35,"context_line":"ONBUILD ARG CONSTRAINTS_BRANCH"},{"line_number":36,"context_line":"ONBUILD ARG CONSTRAINTS_PATH\u003dhttp://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt"},{"line_number":37,"context_line":"ONBUILD ARG EXTRA_DEPS"}],"source_content_type":"text/x-dockerfile","patch_set":35,"id":"5f7c97a3_29739eb6","line":34,"range":{"start_line":34,"start_character":12,"end_line":34,"end_character":22},"updated":"2018-06-18 14:12:03.000000000","message":"That could be set in the previous variable, right? I don\u0027t understand the need of having it separately.","commit_id":"083c45253238d416e93f479a3979a6b787e1242f"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"a710e15aef264450d5ae7a24db94fd62f9522a88","unresolved":false,"context_lines":[{"line_number":31,"context_line":"ONBUILD ARG REPO_PATH"},{"line_number":32,"context_line":"ONBUILD ARG GITHUB_REPO"},{"line_number":33,"context_line":"ONBUILD ARG REPO_VERSION"},{"line_number":34,"context_line":"ONBUILD ARG GIT_COMMIT"},{"line_number":35,"context_line":"ONBUILD ARG CONSTRAINTS_BRANCH"},{"line_number":36,"context_line":"ONBUILD ARG CONSTRAINTS_PATH\u003dhttp://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt"},{"line_number":37,"context_line":"ONBUILD ARG EXTRA_DEPS"}],"source_content_type":"text/x-dockerfile","patch_set":35,"id":"5f7c97a3_f0cf4625","line":34,"range":{"start_line":34,"start_character":12,"end_line":34,"end_character":22},"in_reply_to":"5f7c97a3_29739eb6","updated":"2018-06-25 10:17:14.000000000","message":"No, REPO_VERSION could be `master`, `stable/pike` but also tags and commit hash. I always want commit hash to add to image labels.","commit_id":"083c45253238d416e93f479a3979a6b787e1242f"},{"author":{"_account_id":16222,"name":"witek","email":"witold.bedyk@suse.com","username":"witek"},"change_message_id":"61b56c86540ee673555b8d54b6e6ed807e59d0e8","unresolved":false,"context_lines":[{"line_number":33,"context_line":"ONBUILD ARG REPO_VERSION"},{"line_number":34,"context_line":"ONBUILD ARG GIT_COMMIT"},{"line_number":35,"context_line":"ONBUILD ARG CONSTRAINTS_BRANCH"},{"line_number":36,"context_line":"ONBUILD ARG CONSTRAINTS_PATH\u003dhttp://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt"},{"line_number":37,"context_line":"ONBUILD ARG EXTRA_DEPS"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"# Build-time metadata as defined at"}],"source_content_type":"text/x-dockerfile","patch_set":35,"id":"5f7c97a3_29987eca","line":36,"range":{"start_line":36,"start_character":12,"end_line":36,"end_character":28},"updated":"2018-06-18 14:12:03.000000000","message":"In other places we call it CONSTRAINTS_FILE.","commit_id":"083c45253238d416e93f479a3979a6b787e1242f"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"a710e15aef264450d5ae7a24db94fd62f9522a88","unresolved":false,"context_lines":[{"line_number":33,"context_line":"ONBUILD ARG REPO_VERSION"},{"line_number":34,"context_line":"ONBUILD ARG GIT_COMMIT"},{"line_number":35,"context_line":"ONBUILD ARG CONSTRAINTS_BRANCH"},{"line_number":36,"context_line":"ONBUILD ARG CONSTRAINTS_PATH\u003dhttp://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt"},{"line_number":37,"context_line":"ONBUILD ARG EXTRA_DEPS"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"# Build-time metadata as defined at"}],"source_content_type":"text/x-dockerfile","patch_set":35,"id":"5f7c97a3_f08186c3","line":36,"range":{"start_line":36,"start_character":12,"end_line":36,"end_character":28},"in_reply_to":"5f7c97a3_29987eca","updated":"2018-06-25 10:17:14.000000000","message":"Done","commit_id":"083c45253238d416e93f479a3979a6b787e1242f"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"ce701cafcfa48021df2548018e16e4fd8d986b1b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                \"$CONSTRAINTS_FILE\"?h\u003d\"$CONSTRAINTS_BRANCH\" \u003e\u003e /VERSIONS \u0026\u0026 \\"},{"line_number":100,"context_line":"            # Clean after instalation."},{"line_number":101,"context_line":"            apk del .build-deps \u0026\u0026 \\"},{"line_number":102,"context_line":"            rm -rf /app \u0026\u0026 \\"},{"line_number":103,"context_line":"            rm -rf /root/.cache/ \u0026\u0026 \\"},{"line_number":104,"context_line":"            # Pip is leaving monasca-common repo in /src so remove it."},{"line_number":105,"context_line":"            rm -rf /src/ \u0026\u0026 \\"},{"line_number":106,"context_line":"            rm -rf /tmp/* \u0026\u0026 \\"},{"line_number":107,"context_line":"            rm -rf /var/cache/apk/* \u0026\u0026 \\"},{"line_number":108,"context_line":"            rm -rf /var/log/* \u0026\u0026 \\"},{"line_number":109,"context_line":"            find /usr/local -depth \\"},{"line_number":110,"context_line":"                \\( \\"},{"line_number":111,"context_line":"                    \\( -type d -a \\( -name test -o -name tests \\) \\) \\"}],"source_content_type":"text/x-dockerfile","patch_set":51,"id":"5f7c97a3_e174489e","line":108,"range":{"start_line":102,"start_character":12,"end_line":108,"end_character":34},"updated":"2018-07-09 08:26:26.000000000","message":"It possible to pass multiple directories to rm -rf, so you can do this:\nrm -rf /app /root/.cache/ ...","commit_id":"fc4f90d2eff9250519afbd742cc79d27a5a0f6b3"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3471c0a994ccc2384a4b5d7ee0e3df22c127237b","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                \"$CONSTRAINTS_FILE\"?h\u003d\"$CONSTRAINTS_BRANCH\" \u003e\u003e /VERSIONS \u0026\u0026 \\"},{"line_number":100,"context_line":"            # Clean after instalation."},{"line_number":101,"context_line":"            apk del .build-deps \u0026\u0026 \\"},{"line_number":102,"context_line":"            rm -rf /app \u0026\u0026 \\"},{"line_number":103,"context_line":"            rm -rf /root/.cache/ \u0026\u0026 \\"},{"line_number":104,"context_line":"            # Pip is leaving monasca-common repo in /src so remove it."},{"line_number":105,"context_line":"            rm -rf /src/ \u0026\u0026 \\"},{"line_number":106,"context_line":"            rm -rf /tmp/* \u0026\u0026 \\"},{"line_number":107,"context_line":"            rm -rf /var/cache/apk/* \u0026\u0026 \\"},{"line_number":108,"context_line":"            rm -rf /var/log/* \u0026\u0026 \\"},{"line_number":109,"context_line":"            find /usr/local -depth \\"},{"line_number":110,"context_line":"                \\( \\"},{"line_number":111,"context_line":"                    \\( -type d -a \\( -name test -o -name tests \\) \\) \\"}],"source_content_type":"text/x-dockerfile","patch_set":51,"id":"5f7c97a3_552376be","line":108,"range":{"start_line":102,"start_character":12,"end_line":108,"end_character":34},"in_reply_to":"5f7c97a3_e174489e","updated":"2018-07-09 11:49:59.000000000","message":"Done","commit_id":"fc4f90d2eff9250519afbd742cc79d27a5a0f6b3"},{"author":{"_account_id":26141,"name":"Adrian Czarnecki","email":"adrian.czarnecki@ts.fujitsu.com","username":"czarneckia"},"change_message_id":"ce701cafcfa48021df2548018e16e4fd8d986b1b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            rm -rf /tmp/* \u0026\u0026 \\"},{"line_number":107,"context_line":"            rm -rf /var/cache/apk/* \u0026\u0026 \\"},{"line_number":108,"context_line":"            rm -rf /var/log/* \u0026\u0026 \\"},{"line_number":109,"context_line":"            find /usr/local -depth \\"},{"line_number":110,"context_line":"                \\( \\"},{"line_number":111,"context_line":"                    \\( -type d -a \\( -name test -o -name tests \\) \\) \\"},{"line_number":112,"context_line":"                    -o \\( -type f -a \\( -name \u0027*.pyc\u0027 -o -name \u0027*.pyo\u0027 \\) \\) \\"},{"line_number":113,"context_line":"                \\) -exec rm -rf \u0027{}\u0027 +"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"ONBUILD HEALTHCHECK --interval\u003d5m --timeout\u003d3s \\"},{"line_number":116,"context_line":"                   CMD python3 health_check.py || exit 1"}],"source_content_type":"text/x-dockerfile","patch_set":51,"id":"5f7c97a3_01eb8411","line":113,"range":{"start_line":109,"start_character":12,"end_line":113,"end_character":38},"updated":"2018-07-09 08:26:26.000000000","message":"Pleas add short documentation to this function.","commit_id":"fc4f90d2eff9250519afbd742cc79d27a5a0f6b3"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3471c0a994ccc2384a4b5d7ee0e3df22c127237b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            rm -rf /tmp/* \u0026\u0026 \\"},{"line_number":107,"context_line":"            rm -rf /var/cache/apk/* \u0026\u0026 \\"},{"line_number":108,"context_line":"            rm -rf /var/log/* \u0026\u0026 \\"},{"line_number":109,"context_line":"            find /usr/local -depth \\"},{"line_number":110,"context_line":"                \\( \\"},{"line_number":111,"context_line":"                    \\( -type d -a \\( -name test -o -name tests \\) \\) \\"},{"line_number":112,"context_line":"                    -o \\( -type f -a \\( -name \u0027*.pyc\u0027 -o -name \u0027*.pyo\u0027 \\) \\) \\"},{"line_number":113,"context_line":"                \\) -exec rm -rf \u0027{}\u0027 +"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"ONBUILD HEALTHCHECK --interval\u003d5m --timeout\u003d3s \\"},{"line_number":116,"context_line":"                   CMD python3 health_check.py || exit 1"}],"source_content_type":"text/x-dockerfile","patch_set":51,"id":"5f7c97a3_751eb274","line":113,"range":{"start_line":109,"start_character":12,"end_line":113,"end_character":38},"in_reply_to":"5f7c97a3_01eb8411","updated":"2018-07-09 11:49:59.000000000","message":"Done","commit_id":"fc4f90d2eff9250519afbd742cc79d27a5a0f6b3"}],"docker/README.rst":[{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"b2cadd29e442dc3f9a9981814b13ab90315c62a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"5f7c97a3_b5a941de","updated":"2018-06-06 08:36:05.000000000","message":"that\u0027s true only for python components, isn\u0027t it?","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"5f7c97a3_23949f43","updated":"2018-06-12 07:46:06.000000000","message":"maybe explain some basics:\n- why pykafka and PyMySQL is needed\n- health check stuff\n- \"instructions\" for the child image (and refer to example folder...)","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"5f7c97a3_6dffdd01","in_reply_to":"5f7c97a3_23949f43","updated":"2018-06-12 12:53:31.000000000","message":"For now added TODO to not forget.","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"}],"docker/example/Dockerfile":[{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"8b1bce3cb61e0331de178de90cf70c9fc8078562","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Example Dockerfile for creating Docker image."},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"ARG REPO_PATH\u003dhttps://git.openstack.org/openstack/monasca-api"},{"line_number":4,"context_line":"# Branch, tag or git hash to build from."},{"line_number":5,"context_line":"ARG VERSION\u003dmaster"},{"line_number":6,"context_line":"ARG CONSTRAINTS_BRANCH\u003dmaster"},{"line_number":7,"context_line":"# Extra Python3 dependencies."},{"line_number":8,"context_line":"ARG EXTRA_DEPS\u003d\"gunicorn influxdb python-memcached Jinja2\""},{"line_number":9,"context_line":""}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_38c45c5f","line":6,"range":{"start_line":3,"start_character":0,"end_line":6,"end_character":29},"updated":"2018-06-05 15:06:11.000000000","message":"The LABEL instruction could be used to add metadata to an image. e.g. LABEL version\u003d\"master\"...\nhttps://docs.docker.com/v17.09/engine/reference/builder/#label","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"d0d2d8e19bd609b3bb5d480bb281be9a8964ab0b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Example Dockerfile for creating Docker image."},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"ARG REPO_PATH\u003dhttps://git.openstack.org/openstack/monasca-api"},{"line_number":4,"context_line":"# Branch, tag or git hash to build from."},{"line_number":5,"context_line":"ARG VERSION\u003dmaster"},{"line_number":6,"context_line":"ARG CONSTRAINTS_BRANCH\u003dmaster"},{"line_number":7,"context_line":"# Extra Python3 dependencies."},{"line_number":8,"context_line":"ARG EXTRA_DEPS\u003d\"gunicorn influxdb python-memcached Jinja2\""},{"line_number":9,"context_line":""}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_d2402ea5","line":6,"range":{"start_line":3,"start_character":0,"end_line":6,"end_character":29},"in_reply_to":"5f7c97a3_38c45c5f","updated":"2018-06-11 12:41:46.000000000","message":"Done","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"8b1bce3cb61e0331de178de90cf70c9fc8078562","unresolved":false,"context_lines":[{"line_number":8,"context_line":"ARG EXTRA_DEPS\u003d\"gunicorn influxdb python-memcached Jinja2\""},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Always start from `monasca-base` image and use specific version of it."},{"line_number":11,"context_line":"FROM monasca-base:latest"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Environment variables used for our service or wait scripts."},{"line_number":14,"context_line":"ENV \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_18c3a03a","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":24},"updated":"2018-06-05 15:06:11.000000000","message":"should be configurable, shouldn\u0027t it?\ne.g. if I want to use stable/pike","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"d0d2d8e19bd609b3bb5d480bb281be9a8964ab0b","unresolved":false,"context_lines":[{"line_number":8,"context_line":"ARG EXTRA_DEPS\u003d\"gunicorn influxdb python-memcached Jinja2\""},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Always start from `monasca-base` image and use specific version of it."},{"line_number":11,"context_line":"FROM monasca-base:latest"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Environment variables used for our service or wait scripts."},{"line_number":14,"context_line":"ENV \\"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_a9fd09b3","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":24},"in_reply_to":"5f7c97a3_18c3a03a","updated":"2018-06-11 12:41:46.000000000","message":"Done","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"8b1bce3cb61e0331de178de90cf70c9fc8078562","unresolved":false,"context_lines":[{"line_number":14,"context_line":"ENV \\"},{"line_number":15,"context_line":"    KAFKA_URI\u003dkafka:9092 \\"},{"line_number":16,"context_line":"    KAFKA_WAIT_FOR_TOPICS\u003dalarm-state-transitions,metrics \\"},{"line_number":17,"context_line":"    MYSQL_HOST\u003dmysql \\"},{"line_number":18,"context_line":"    MYSQL_USER\u003dmonapi \\"},{"line_number":19,"context_line":"    MYSQL_PASSWORD\u003dpassword \\"},{"line_number":20,"context_line":"    MYSQL_DB\u003dmon \\"},{"line_number":21,"context_line":"    LOG_LEVEL\u003dINFO"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Copy all neccessary files to proper locations."}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_9bb56a81","line":20,"range":{"start_line":17,"start_character":0,"end_line":20,"end_character":18},"updated":"2018-06-05 15:06:11.000000000","message":"well, it is an example, but this example suggests that MYSQL is used...comment refers to \"service or wait scripts\" so shouldn\u0027t the (example) start script (start.sh) e.g. wait for the MYSQL service?","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"d0d2d8e19bd609b3bb5d480bb281be9a8964ab0b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"ENV \\"},{"line_number":15,"context_line":"    KAFKA_URI\u003dkafka:9092 \\"},{"line_number":16,"context_line":"    KAFKA_WAIT_FOR_TOPICS\u003dalarm-state-transitions,metrics \\"},{"line_number":17,"context_line":"    MYSQL_HOST\u003dmysql \\"},{"line_number":18,"context_line":"    MYSQL_USER\u003dmonapi \\"},{"line_number":19,"context_line":"    MYSQL_PASSWORD\u003dpassword \\"},{"line_number":20,"context_line":"    MYSQL_DB\u003dmon \\"},{"line_number":21,"context_line":"    LOG_LEVEL\u003dINFO"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"# Copy all neccessary files to proper locations."}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_32096283","line":20,"range":{"start_line":17,"start_character":0,"end_line":20,"end_character":18},"in_reply_to":"5f7c97a3_9bb56a81","updated":"2018-06-11 12:41:46.000000000","message":"Added running script to start.sh but I still need to create one.","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"b2cadd29e442dc3f9a9981814b13ab90315c62a6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"# unnecessary image layers. Clean at the end to conserve space."},{"line_number":29,"context_line":"RUN \\"},{"line_number":30,"context_line":"    chmod +x /start.sh \u0026\u0026 \\"},{"line_number":31,"context_line":"    echo \"Hello when building.\""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"CMD [\"/start.sh\"]"}],"source_content_type":"text/x-dockerfile","patch_set":23,"id":"5f7c97a3_f52499b1","line":31,"range":{"start_line":31,"start_character":4,"end_line":31,"end_character":31},"updated":"2018-06-06 08:36:05.000000000","message":"I find this comment a bit confusing...It\u0027s written after the build process is finished, isn\u0027t it?\nMaybe \"build successfully\" would be better?","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Example Dockerfile for creating Docker image."},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"ARG DOCKER_IMAGE\u003dmonasca-api"},{"line_number":4,"context_line":"ARG REPO_PATH\u003dhttps://git.openstack.org/openstack/monasca-api"},{"line_number":5,"context_line":"# Branch, tag or git hash to build from."},{"line_number":6,"context_line":"ARG REPO_VERSION\u003dmaster"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_e372274a","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":1},"updated":"2018-06-12 07:46:06.000000000","message":"remove empty line before ARG","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Example Dockerfile for creating Docker image."},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"ARG DOCKER_IMAGE\u003dmonasca-api"},{"line_number":4,"context_line":"ARG REPO_PATH\u003dhttps://git.openstack.org/openstack/monasca-api"},{"line_number":5,"context_line":"# Branch, tag or git hash to build from."},{"line_number":6,"context_line":"ARG REPO_VERSION\u003dmaster"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_302cde97","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":1},"in_reply_to":"5f7c97a3_e372274a","updated":"2018-06-12 12:53:31.000000000","message":"Done","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"ARG DOCKER_IMAGE\u003dmonasca-api"},{"line_number":4,"context_line":"ARG REPO_PATH\u003dhttps://git.openstack.org/openstack/monasca-api"},{"line_number":5,"context_line":"# Branch, tag or git hash to build from."},{"line_number":6,"context_line":"ARG REPO_VERSION\u003dmaster"},{"line_number":7,"context_line":"ARG CONSTRAINTS_BRANCH\u003dmaster"},{"line_number":8,"context_line":"# Extra Python3 dependencies."}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_237d7f1b","line":5,"range":{"start_line":5,"start_character":0,"end_line":5,"end_character":2},"updated":"2018-06-12 07:46:06.000000000","message":"add empty line before comment","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"ARG DOCKER_IMAGE\u003dmonasca-api"},{"line_number":4,"context_line":"ARG REPO_PATH\u003dhttps://git.openstack.org/openstack/monasca-api"},{"line_number":5,"context_line":"# Branch, tag or git hash to build from."},{"line_number":6,"context_line":"ARG REPO_VERSION\u003dmaster"},{"line_number":7,"context_line":"ARG CONSTRAINTS_BRANCH\u003dmaster"},{"line_number":8,"context_line":"# Extra Python3 dependencies."}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_b0378ee3","line":5,"range":{"start_line":5,"start_character":0,"end_line":5,"end_character":2},"in_reply_to":"5f7c97a3_237d7f1b","updated":"2018-06-12 12:53:31.000000000","message":"Done","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[{"line_number":5,"context_line":"# Branch, tag or git hash to build from."},{"line_number":6,"context_line":"ARG REPO_VERSION\u003dmaster"},{"line_number":7,"context_line":"ARG CONSTRAINTS_BRANCH\u003dmaster"},{"line_number":8,"context_line":"# Extra Python3 dependencies."},{"line_number":9,"context_line":"ARG EXTRA_DEPS\u003d\"gunicorn influxdb python-memcached Jinja2\""},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"ARG BASE_VERSION\u003d1.0.0"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_0370833f","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":1},"updated":"2018-06-12 07:46:06.000000000","message":"add empty line before comment","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":5,"context_line":"# Branch, tag or git hash to build from."},{"line_number":6,"context_line":"ARG REPO_VERSION\u003dmaster"},{"line_number":7,"context_line":"ARG CONSTRAINTS_BRANCH\u003dmaster"},{"line_number":8,"context_line":"# Extra Python3 dependencies."},{"line_number":9,"context_line":"ARG EXTRA_DEPS\u003d\"gunicorn influxdb python-memcached Jinja2\""},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"ARG BASE_VERSION\u003d1.0.0"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_5032baf3","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":1},"in_reply_to":"5f7c97a3_0370833f","updated":"2018-06-12 12:53:31.000000000","message":"Done","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"392a0bdaca259f763d2f41624d9a87c845b97dac","unresolved":false,"context_lines":[{"line_number":6,"context_line":"ARG REPO_VERSION\u003dmaster"},{"line_number":7,"context_line":"ARG CONSTRAINTS_BRANCH\u003dmaster"},{"line_number":8,"context_line":"# Extra Python3 dependencies."},{"line_number":9,"context_line":"ARG EXTRA_DEPS\u003d\"gunicorn influxdb python-memcached Jinja2\""},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"ARG BASE_VERSION\u003d1.0.0"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_74700fa5","line":9,"range":{"start_line":9,"start_character":51,"end_line":9,"end_character":57},"updated":"2018-06-12 09:05:10.000000000","message":"not needed because of templer...","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":6,"context_line":"ARG REPO_VERSION\u003dmaster"},{"line_number":7,"context_line":"ARG CONSTRAINTS_BRANCH\u003dmaster"},{"line_number":8,"context_line":"# Extra Python3 dependencies."},{"line_number":9,"context_line":"ARG EXTRA_DEPS\u003d\"gunicorn influxdb python-memcached Jinja2\""},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"ARG BASE_VERSION\u003d1.0.0"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_702d768d","line":9,"range":{"start_line":9,"start_character":51,"end_line":9,"end_character":57},"in_reply_to":"5f7c97a3_74700fa5","updated":"2018-06-12 12:53:31.000000000","message":"Done","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[{"line_number":8,"context_line":"# Extra Python3 dependencies."},{"line_number":9,"context_line":"ARG EXTRA_DEPS\u003d\"gunicorn influxdb python-memcached Jinja2\""},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"ARG BASE_VERSION\u003d1.0.0"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Always start from `monasca-base` image and use specific version of it."},{"line_number":14,"context_line":"FROM monasca-base:$BASE_VERSION"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_63e297d6","line":11,"range":{"start_line":11,"start_character":4,"end_line":11,"end_character":22},"updated":"2018-06-12 07:46:06.000000000","message":"base version for?\nmaster?\nqueens?\n...","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":8,"context_line":"# Extra Python3 dependencies."},{"line_number":9,"context_line":"ARG EXTRA_DEPS\u003d\"gunicorn influxdb python-memcached Jinja2\""},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"ARG BASE_VERSION\u003d1.0.0"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# Always start from `monasca-base` image and use specific version of it."},{"line_number":14,"context_line":"FROM monasca-base:$BASE_VERSION"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_30513e0f","line":11,"range":{"start_line":11,"start_character":4,"end_line":11,"end_character":22},"in_reply_to":"5f7c97a3_63e297d6","updated":"2018-06-12 12:53:31.000000000","message":"Done","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"392a0bdaca259f763d2f41624d9a87c845b97dac","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    LOG_LEVEL\u003dINFO \\"},{"line_number":25,"context_line":"    STAY_ALIVE_ON_FAILURE\u003d\"false\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Copy all neccessary files to proper locations."},{"line_number":28,"context_line":"COPY config_1.yml.j2 config_2.yml.j2 /"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# Run here all additionals steps your service need post installation."},{"line_number":31,"context_line":"# Stay with only one `RUN` and use `\u0026\u0026 \\` for next steps to don\u0027t create"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_949a8bc2","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":38},"updated":"2018-06-12 09:05:10.000000000","message":"better would be to have a generic way in base image to copy config files (e.g. all files from template folder)?","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    LOG_LEVEL\u003dINFO \\"},{"line_number":25,"context_line":"    STAY_ALIVE_ON_FAILURE\u003d\"false\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# Copy all neccessary files to proper locations."},{"line_number":28,"context_line":"COPY config_1.yml.j2 config_2.yml.j2 /"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# Run here all additionals steps your service need post installation."},{"line_number":31,"context_line":"# Stay with only one `RUN` and use `\u0026\u0026 \\` for next steps to don\u0027t create"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_d06c8ad1","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":38},"in_reply_to":"5f7c97a3_949a8bc2","updated":"2018-06-12 12:53:31.000000000","message":"I don\u0027t think it\u0027s good idea. Sometimes this configuration files need to stay in very specific locations.","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    echo \"Some steps to do after main installation.\" \u0026\u0026 \\"},{"line_number":35,"context_line":"    echo \"Hello when building.\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# Use healthcheck functionality to provide information for Docker if service"},{"line_number":38,"context_line":"# running inside container is healthy. Avoid using `curl` directly and instead"},{"line_number":39,"context_line":"# use `healthcheck.py` written with specific service in mind. It will provide"},{"line_number":40,"context_line":"# more flexibility like when creating JSON request body."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"CMD [\"/start.sh\"]"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_e3c0e72d","line":40,"range":{"start_line":37,"start_character":0,"end_line":40,"end_character":56},"updated":"2018-06-12 07:46:06.000000000","message":"is there anything to do here?\nShouldn\u0027t there be a healthcheck script with default implementation in the examples?\nSo comment here should be: implement healthcheck script","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    echo \"Some steps to do after main installation.\" \u0026\u0026 \\"},{"line_number":35,"context_line":"    echo \"Hello when building.\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# Use healthcheck functionality to provide information for Docker if service"},{"line_number":38,"context_line":"# running inside container is healthy. Avoid using `curl` directly and instead"},{"line_number":39,"context_line":"# use `healthcheck.py` written with specific service in mind. It will provide"},{"line_number":40,"context_line":"# more flexibility like when creating JSON request body."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"CMD [\"/start.sh\"]"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_50b5da30","line":40,"range":{"start_line":37,"start_character":0,"end_line":40,"end_character":56},"in_reply_to":"5f7c97a3_e3c0e72d","updated":"2018-06-12 12:53:31.000000000","message":"Moved this comment to README.","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"392a0bdaca259f763d2f41624d9a87c845b97dac","unresolved":false,"context_lines":[{"line_number":38,"context_line":"# running inside container is healthy. Avoid using `curl` directly and instead"},{"line_number":39,"context_line":"# use `healthcheck.py` written with specific service in mind. It will provide"},{"line_number":40,"context_line":"# more flexibility like when creating JSON request body."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"CMD [\"/start.sh\"]"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_b488e770","line":41,"updated":"2018-06-12 09:05:10.000000000","message":"all services have to expose a port...so we should define a place...\ne.g.\n\n#exposed service port (and mybe an echo)","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":38,"context_line":"# running inside container is healthy. Avoid using `curl` directly and instead"},{"line_number":39,"context_line":"# use `healthcheck.py` written with specific service in mind. It will provide"},{"line_number":40,"context_line":"# more flexibility like when creating JSON request body."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"CMD [\"/start.sh\"]"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_506aba80","line":41,"in_reply_to":"5f7c97a3_b488e770","updated":"2018-06-12 12:53:31.000000000","message":"Done","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[{"line_number":39,"context_line":"# use `healthcheck.py` written with specific service in mind. It will provide"},{"line_number":40,"context_line":"# more flexibility like when creating JSON request body."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"CMD [\"/start.sh\"]"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_63fb777a","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":17},"updated":"2018-06-12 07:46:06.000000000","message":"is there anything to do here? \nSo comment here should be: implement start script","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":39,"context_line":"# use `healthcheck.py` written with specific service in mind. It will provide"},{"line_number":40,"context_line":"# more flexibility like when creating JSON request body."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"CMD [\"/start.sh\"]"}],"source_content_type":"text/x-dockerfile","patch_set":29,"id":"5f7c97a3_90f932c9","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":17},"in_reply_to":"5f7c97a3_63fb777a","updated":"2018-06-12 12:53:31.000000000","message":"Done","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"}],"docker/example/README.rst":[{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"b2cadd29e442dc3f9a9981814b13ab90315c62a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"5f7c97a3_15d03553","updated":"2018-06-06 08:36:05.000000000","message":"only for python components","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"}],"docker/example/build_image.sh":[{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[{"line_number":8,"context_line":"set -x"},{"line_number":9,"context_line":"# This script is used for building Docker image with proper labels."},{"line_number":10,"context_line":"# To build specific version run this script in the following way:"},{"line_number":11,"context_line":"# $ ./build_image.sh stable/queens"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"[ -z \"$DOCKER_IMAGE\" ] \u0026\u0026 DOCKER_IMAGE\u003d$(\\grep DOCKER_IMAGE Dockerfile | cut -f2 -d\"\u003d\")"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-sh","patch_set":29,"id":"5f7c97a3_767ed76a","line":11,"range":{"start_line":11,"start_character":21,"end_line":11,"end_character":34},"updated":"2018-06-12 07:46:06.000000000","message":"shouldn\u0027t it be origin/stable/queens?","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":8,"context_line":"set -x"},{"line_number":9,"context_line":"# This script is used for building Docker image with proper labels."},{"line_number":10,"context_line":"# To build specific version run this script in the following way:"},{"line_number":11,"context_line":"# $ ./build_image.sh stable/queens"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"[ -z \"$DOCKER_IMAGE\" ] \u0026\u0026 DOCKER_IMAGE\u003d$(\\grep DOCKER_IMAGE Dockerfile | cut -f2 -d\"\u003d\")"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-sh","patch_set":29,"id":"5f7c97a3_10d4421f","line":11,"range":{"start_line":11,"start_character":21,"end_line":11,"end_character":34},"in_reply_to":"5f7c97a3_767ed76a","updated":"2018-06-12 12:53:31.000000000","message":"Done","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"}],"docker/example/start.sh":[{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"b2cadd29e442dc3f9a9981814b13ab90315c62a6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/sh"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Test services we need before starting our service."},{"line_number":4,"context_line":"python3 /kafka_wait_for_topics.py || exit 1"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Template all config files before start, it will use env variables."}],"source_content_type":"text/x-sh","patch_set":23,"id":"5f7c97a3_3ac19ee5","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":52},"updated":"2018-06-06 08:36:05.000000000","message":"an echo like that would be helpful:\necho \"start script: waiting for needed services\"","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"d0d2d8e19bd609b3bb5d480bb281be9a8964ab0b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/sh"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Test services we need before starting our service."},{"line_number":4,"context_line":"python3 /kafka_wait_for_topics.py || exit 1"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Template all config files before start, it will use env variables."}],"source_content_type":"text/x-sh","patch_set":23,"id":"5f7c97a3_d26eee2a","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":52},"in_reply_to":"5f7c97a3_3ac19ee5","updated":"2018-06-11 12:41:46.000000000","message":"Done","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"b2cadd29e442dc3f9a9981814b13ab90315c62a6","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Test services we need before starting our service."},{"line_number":4,"context_line":"python3 /kafka_wait_for_topics.py || exit 1"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Template all config files before start, it will use env variables."},{"line_number":7,"context_line":"# Read usage examples: https://pypi.org/project/Templer/"},{"line_number":8,"context_line":"templer /*.j2 /"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Start our service."}],"source_content_type":"text/x-sh","patch_set":23,"id":"5f7c97a3_5aa9fa21","line":7,"range":{"start_line":6,"start_character":0,"end_line":7,"end_character":56},"updated":"2018-06-06 08:36:05.000000000","message":"an echo like that would be helpful: \necho \"start script: creating configfiles from templates\"","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"d0d2d8e19bd609b3bb5d480bb281be9a8964ab0b","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Test services we need before starting our service."},{"line_number":4,"context_line":"python3 /kafka_wait_for_topics.py || exit 1"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"# Template all config files before start, it will use env variables."},{"line_number":7,"context_line":"# Read usage examples: https://pypi.org/project/Templer/"},{"line_number":8,"context_line":"templer /*.j2 /"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Start our service."}],"source_content_type":"text/x-sh","patch_set":23,"id":"5f7c97a3_72611a39","line":7,"range":{"start_line":6,"start_character":0,"end_line":7,"end_character":56},"in_reply_to":"5f7c97a3_5aa9fa21","updated":"2018-06-11 12:41:46.000000000","message":"Done","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"b2cadd29e442dc3f9a9981814b13ab90315c62a6","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Start our service."},{"line_number":11,"context_line":"# gunicorn --args"},{"line_number":12,"context_line":"echo \"Hello from start.sh\""}],"source_content_type":"text/x-sh","patch_set":23,"id":"5f7c97a3_fa6fa6f9","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":26},"updated":"2018-06-06 08:36:05.000000000","message":"an echo like that would be more helpful: \necho \"start script: starting container\"","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"d0d2d8e19bd609b3bb5d480bb281be9a8964ab0b","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"# Start our service."},{"line_number":11,"context_line":"# gunicorn --args"},{"line_number":12,"context_line":"echo \"Hello from start.sh\""}],"source_content_type":"text/x-sh","patch_set":23,"id":"5f7c97a3_525c1e7c","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":26},"in_reply_to":"5f7c97a3_fa6fa6f9","updated":"2018-06-11 12:41:46.000000000","message":"Done","commit_id":"82b6d344e77dd623e571f50ab55774d780fdc579"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"392a0bdaca259f763d2f41624d9a87c845b97dac","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/sh"},{"line_number":2,"context_line":"# Starting script."},{"line_number":3,"context_line":"# All checks you need to do before service could be safely started should"},{"line_number":4,"context_line":"# be added in this file."},{"line_number":5,"context_line":""}],"source_content_type":"text/x-sh","patch_set":29,"id":"5f7c97a3_f4fadfb7","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":1},"updated":"2018-06-12 09:05:10.000000000","message":"set -x","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[{"line_number":8,"context_line":"python3 /kafka_wait_for_topics.py || exit 1"},{"line_number":9,"context_line":"python3 /check_mysql.py || exit 1"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Template all config files before start, it will use env variables."},{"line_number":12,"context_line":"# Read usage examples: https://pypi.org/project/Templer/"},{"line_number":13,"context_line":"echo \"Start script: creating config files from templates\""},{"line_number":14,"context_line":"templer /*.j2 /"}],"source_content_type":"text/x-sh","patch_set":29,"id":"5f7c97a3_f6a427a5","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":2},"updated":"2018-06-12 07:46:06.000000000","message":"before calling templer I had to set some env variables for gunicorn (for log-api image).\n\necho \"set GUNICORN stuff\"\nexport GUNICORN_BACKLOG\u003d1000\nexport GUNICORN_WORKERS\u003d9\nexport GUNICORN_WORKER_CLASS\u003dgevent\nexport GUNICORN_WORKER_CONNECTIONS\u003d2000\nexport GUNICORN_TIMEOUT\u003d1000\nexport PYTHONIOENCODING\u003dutf-8\n\nof course it should be possible to set the varibales from outside like that:\nGUNICORN_WORKERS\u003d${GUNICORN_WORKERS:-\"9\"}\nGUNICORN_WORKER_CLASS\u003d${GUNICORN_WORKER_CLASS:-\"gevent\"}\nGUNICORN_WORKER_CONNECTIONS\u003d${GUNICORN_WORKER_CONNECTIONS:-\"2000\"}\nGUNICORN_BACKLOG\u003d${GUNICORN_BACKLOG:-\"1000\"}\n\n--\u003e my point is we should add a comment and/or a echo to unify the place where to set the additional env variables","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":8,"context_line":"python3 /kafka_wait_for_topics.py || exit 1"},{"line_number":9,"context_line":"python3 /check_mysql.py || exit 1"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Template all config files before start, it will use env variables."},{"line_number":12,"context_line":"# Read usage examples: https://pypi.org/project/Templer/"},{"line_number":13,"context_line":"echo \"Start script: creating config files from templates\""},{"line_number":14,"context_line":"templer /*.j2 /"}],"source_content_type":"text/x-sh","patch_set":29,"id":"5f7c97a3_d0a7aabb","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":2},"in_reply_to":"5f7c97a3_f6a427a5","updated":"2018-06-12 12:53:31.000000000","message":"Here only static variables should be configured, rest variables should be added to Dockerfile. Added comment.","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# Template all config files before start, it will use env variables."},{"line_number":12,"context_line":"# Read usage examples: https://pypi.org/project/Templer/"},{"line_number":13,"context_line":"echo \"Start script: creating config files from templates\""},{"line_number":14,"context_line":"templer /*.j2 /"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# Start our service."},{"line_number":17,"context_line":"# gunicorn --args"}],"source_content_type":"text/x-sh","patch_set":29,"id":"5f7c97a3_f66e672a","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":7},"updated":"2018-06-12 07:46:06.000000000","message":"I\u0027m not sure if it is a good idea to \"print\" all environment variables before executing templer...\nlike:\necho \"environment variables\"\nenv\necho \"\"","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"1fbf9482f85596a889d0bb6da4db77edb676b9db","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# Template all config files before start, it will use env variables."},{"line_number":12,"context_line":"# Read usage examples: https://pypi.org/project/Templer/"},{"line_number":13,"context_line":"echo \"Start script: creating config files from templates\""},{"line_number":14,"context_line":"templer /*.j2 /"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# Start our service."},{"line_number":17,"context_line":"# gunicorn --args"}],"source_content_type":"text/x-sh","patch_set":29,"id":"5f7c97a3_7641f709","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":15},"updated":"2018-06-12 07:46:06.000000000","message":"this doesn\u0027t work in my environment...\nI had to do it the hard way:\ntempler /etc/monasca/log-api.conf.j2 /etc/monasca/log-api.conf","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"3cf879d6ac810a3e06aa1c275658614a447c4215","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# Template all config files before start, it will use env variables."},{"line_number":12,"context_line":"# Read usage examples: https://pypi.org/project/Templer/"},{"line_number":13,"context_line":"echo \"Start script: creating config files from templates\""},{"line_number":14,"context_line":"templer /*.j2 /"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# Start our service."},{"line_number":17,"context_line":"# gunicorn --args"}],"source_content_type":"text/x-sh","patch_set":29,"id":"5f7c97a3_b09eae51","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":7},"in_reply_to":"5f7c97a3_f66e672a","updated":"2018-06-12 12:53:31.000000000","message":"I don\u0027t think they should be printed here. They can easily be checked with logging to running container.","commit_id":"865538cb20175bb0d1774896c67717e4e6eb0d7a"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"248e619f76ad430bd466bb395180112e62988ffc","unresolved":false,"context_lines":[{"line_number":8,"context_line":"python3 /kafka_wait_for_topics.py || exit 1"},{"line_number":9,"context_line":"python3 /mysql_check.py || exit 1"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Put all static (not configurable by user) envirmnet variables here."},{"line_number":12,"context_line":"# export GUNICORN_BACKLOG\u003d1000"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"# Template all config files before start, it will use env variables."}],"source_content_type":"text/x-sh","patch_set":34,"id":"5f7c97a3_6d78cb8e","line":11,"range":{"start_line":11,"start_character":10,"end_line":11,"end_character":16},"updated":"2018-06-18 06:57:24.000000000","message":"Why put them into this script? Why not into the dockerfile?","commit_id":"8a2203d6c46133d10a244da0e506a51120627dcf"},{"author":{"_account_id":16253,"name":"Christian Brandstetter","email":"christian.brandstetter@est.fujitsu.com","username":"christianB"},"change_message_id":"248e619f76ad430bd466bb395180112e62988ffc","unresolved":false,"context_lines":[{"line_number":8,"context_line":"python3 /kafka_wait_for_topics.py || exit 1"},{"line_number":9,"context_line":"python3 /mysql_check.py || exit 1"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Put all static (not configurable by user) envirmnet variables here."},{"line_number":12,"context_line":"# export GUNICORN_BACKLOG\u003d1000"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"# Template all config files before start, it will use env variables."}],"source_content_type":"text/x-sh","patch_set":34,"id":"5f7c97a3_cd38ffd5","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":53},"updated":"2018-06-18 06:57:24.000000000","message":"environment","commit_id":"8a2203d6c46133d10a244da0e506a51120627dcf"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"c74bdc259582e974777d4fc5bb8ac61e23e57aeb","unresolved":false,"context_lines":[{"line_number":8,"context_line":"python3 /kafka_wait_for_topics.py || exit 1"},{"line_number":9,"context_line":"python3 /mysql_check.py || exit 1"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Put all static (not configurable by user) envirmnet variables here."},{"line_number":12,"context_line":"# export GUNICORN_BACKLOG\u003d1000"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"# Template all config files before start, it will use env variables."}],"source_content_type":"text/x-sh","patch_set":34,"id":"5f7c97a3_70197f78","line":11,"range":{"start_line":11,"start_character":10,"end_line":11,"end_character":16},"in_reply_to":"5f7c97a3_6d78cb8e","updated":"2018-06-18 12:27:08.000000000","message":"Removed both of this lines.","commit_id":"8a2203d6c46133d10a244da0e506a51120627dcf"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"c74bdc259582e974777d4fc5bb8ac61e23e57aeb","unresolved":false,"context_lines":[{"line_number":8,"context_line":"python3 /kafka_wait_for_topics.py || exit 1"},{"line_number":9,"context_line":"python3 /mysql_check.py || exit 1"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"# Put all static (not configurable by user) envirmnet variables here."},{"line_number":12,"context_line":"# export GUNICORN_BACKLOG\u003d1000"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"# Template all config files before start, it will use env variables."}],"source_content_type":"text/x-sh","patch_set":34,"id":"5f7c97a3_302547af","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":53},"in_reply_to":"5f7c97a3_cd38ffd5","updated":"2018-06-18 12:27:08.000000000","message":"Removed.","commit_id":"8a2203d6c46133d10a244da0e506a51120627dcf"}],"docker/kafka_wait_for_topics.py":[{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"df4f441a4126e90bc0a1d2fae6e3488347c6ea79","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    \"\"\"Raise when topic was not found.\"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"def retry(retries\u003d5, delay\u003d2.0, exc_types\u003d(TopicNoPartition, TopicNotFound)):"},{"line_number":73,"context_line":"    \"\"\"Retry decorator.\"\"\""},{"line_number":74,"context_line":"    def decorator(func):"},{"line_number":75,"context_line":"        def f_retry(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":15,"id":"5f7c97a3_c3cad96c","line":72,"range":{"start_line":72,"start_character":4,"end_line":72,"end_character":9},"updated":"2018-05-23 13:10:28.000000000","message":"Just wondering - how will these images be deployed? If you were using something like Docker Swarm, you could make the orchestration engine wait for this to come up before dependent services?","commit_id":"2a60594f43d18edf6d7033e29afefd5b8019bc23"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"98e1b5df70dafbe4300ddef3a48e184cd8910c33","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    \"\"\"Raise when topic was not found.\"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"def retry(retries\u003d5, delay\u003d2.0, exc_types\u003d(TopicNoPartition, TopicNotFound)):"},{"line_number":73,"context_line":"    \"\"\"Retry decorator.\"\"\""},{"line_number":74,"context_line":"    def decorator(func):"},{"line_number":75,"context_line":"        def f_retry(*args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":15,"id":"5f7c97a3_ae13f465","line":72,"range":{"start_line":72,"start_character":4,"end_line":72,"end_character":9},"in_reply_to":"5f7c97a3_c3cad96c","updated":"2018-05-24 13:44:14.000000000","message":"Well some operators don\u0027t want Docker Swarm and Kubernetes because they would need to additionally pay on RedHat for it or they want to run everything only on one host and docker compose is fine for it. It will also avoid many errors/restarts at the beginning of initialization (we got complains about that...).\n\nhttps://docs.docker.com/compose/startup-order/\n\nI will also create script for checking if Mysql is working.","commit_id":"2a60594f43d18edf6d7033e29afefd5b8019bc23"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"df4f441a4126e90bc0a1d2fae6e3488347c6ea79","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"@retry(retries\u003dKAFKA_WAIT_RETRIES, delay\u003dKAFKA_WAIT_INTERVAL)"},{"line_number":98,"context_line":"def check_topics(client, req_topics):"},{"line_number":99,"context_line":"    \"\"\"Check for existence of provided topics in Kafka.\"\"\""},{"line_number":100,"context_line":"    logger.debug(\u0027Found topics: %r\u0027, client.topics.keys())"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    for req_topic in req_topics:"}],"source_content_type":"text/x-python","patch_set":15,"id":"5f7c97a3_a37d5d1d","line":99,"range":{"start_line":99,"start_character":46,"end_line":99,"end_character":48},"updated":"2018-05-23 13:10:28.000000000","message":"It might be nice to have a note about which services might call this? Assuming Kafka will have automatic topic creation enabled, this will be consumers? I guess there are issues with some consumers not retrying if a topic doesn\u0027t exist or have I missed the point?","commit_id":"2a60594f43d18edf6d7033e29afefd5b8019bc23"},{"author":{"_account_id":21922,"name":"Dobroslaw Zybort","email":"dobroslaw.zybort@ts.fujitsu.com","username":"dobrolaw.zybort"},"change_message_id":"98e1b5df70dafbe4300ddef3a48e184cd8910c33","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"@retry(retries\u003dKAFKA_WAIT_RETRIES, delay\u003dKAFKA_WAIT_INTERVAL)"},{"line_number":98,"context_line":"def check_topics(client, req_topics):"},{"line_number":99,"context_line":"    \"\"\"Check for existence of provided topics in Kafka.\"\"\""},{"line_number":100,"context_line":"    logger.debug(\u0027Found topics: %r\u0027, client.topics.keys())"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    for req_topic in req_topics:"}],"source_content_type":"text/x-python","patch_set":15,"id":"5f7c97a3_916e5d94","line":99,"range":{"start_line":99,"start_character":46,"end_line":99,"end_character":48},"in_reply_to":"5f7c97a3_a37d5d1d","updated":"2018-05-24 13:44:14.000000000","message":"Yes, some services start reading from topics before there is any data send to this topics so basically now in `monasca-docker` and `monasca-api/devstack` both create all topics before any monasca services are running. And Kafka automatic topics creation is disabled.","commit_id":"2a60594f43d18edf6d7033e29afefd5b8019bc23"}]}
