)]}'
{"doc/examples/Dockerfile.opensuse_15":[{"author":{"_account_id":23928,"name":"Pete Birley","email":"petebirley@gmail.com","username":"portdirect"},"change_message_id":"1af49c78205db0793dbb8b42ef2e3ba1de0347d9","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"ENV LANG\u003dC.UTF-8, LC_ALL\u003dC.UTF-8"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"EXPOSE 8000"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"ENTRYPOINT [\"./entrypoint.sh\"]"},{"line_number":17,"context_line":"CMD [\"server\"]"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_2b3404fb","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":11},"updated":"2019-10-22 14:11:22.000000000","message":"in a k8s env, there is no value in this.","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":23928,"name":"Pete Birley","email":"petebirley@gmail.com","username":"portdirect"},"change_message_id":"26e9b18055000148b20c3b5f710bbeba39a088ba","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"ENV LANG\u003dC.UTF-8, LC_ALL\u003dC.UTF-8"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"EXPOSE 8000"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"ENTRYPOINT [\"./entrypoint.sh\"]"},{"line_number":17,"context_line":"CMD [\"server\"]"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_667b11be","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":11},"in_reply_to":"3fa7e38b_062c9d48","updated":"2019-10-22 14:48:48.000000000","message":"yes, but even then, the port exposed is a config param both in the application and on the cli - in practice, this metadata typically causes more confusion that intsolves.","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"95d8a62ddb061decdec4a1fcc041d1bfb8934ae0","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"ENV LANG\u003dC.UTF-8, LC_ALL\u003dC.UTF-8"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"EXPOSE 8000"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"ENTRYPOINT [\"./entrypoint.sh\"]"},{"line_number":17,"context_line":"CMD [\"server\"]"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_062c9d48","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":11},"in_reply_to":"3fa7e38b_2b3404fb","updated":"2019-10-22 14:42:26.000000000","message":"In dev environment containers could be run w/o k8s, right?","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"d067fae70c53c97119ec80aae17b766b494b0ccc","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"ENV LANG\u003dC.UTF-8, LC_ALL\u003dC.UTF-8"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"EXPOSE 8000"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"ENTRYPOINT [\"./entrypoint.sh\"]"},{"line_number":17,"context_line":"CMD [\"server\"]"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_020adf24","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":11},"in_reply_to":"3fa7e38b_667b11be","updated":"2019-10-29 15:30:27.000000000","message":"All right. Convinced me. Thank you.","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":23928,"name":"Pete Birley","email":"petebirley@gmail.com","username":"portdirect"},"change_message_id":"1af49c78205db0793dbb8b42ef2e3ba1de0347d9","unresolved":false,"context_lines":[{"line_number":16,"context_line":"ENTRYPOINT [\"./entrypoint.sh\"]"},{"line_number":17,"context_line":"CMD [\"server\"]"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"RUN useradd -u 1000 -g users -d /armada armada"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Don\u0027t run \u0027zypper up\u0027, \u0027apt-get upgrade\u0027 and similar. List packages"},{"line_number":22,"context_line":"# being installed in alphabetical order to avoid possible merge"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_6b299c99","line":19,"range":{"start_line":19,"start_character":15,"end_line":19,"end_character":19},"updated":"2019-10-22 14:11:22.000000000","message":"should this not be an arg (with a default)","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"d067fae70c53c97119ec80aae17b766b494b0ccc","unresolved":false,"context_lines":[{"line_number":16,"context_line":"ENTRYPOINT [\"./entrypoint.sh\"]"},{"line_number":17,"context_line":"CMD [\"server\"]"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"RUN useradd -u 1000 -g users -d /armada armada"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Don\u0027t run \u0027zypper up\u0027, \u0027apt-get upgrade\u0027 and similar. List packages"},{"line_number":22,"context_line":"# being installed in alphabetical order to avoid possible merge"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_d596bf94","line":19,"range":{"start_line":19,"start_character":15,"end_line":19,"end_character":19},"in_reply_to":"3fa7e38b_2666792b","updated":"2019-10-29 15:30:27.000000000","message":"Made it parametrized with default value 1000.","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":23928,"name":"Pete Birley","email":"petebirley@gmail.com","username":"portdirect"},"change_message_id":"26e9b18055000148b20c3b5f710bbeba39a088ba","unresolved":false,"context_lines":[{"line_number":16,"context_line":"ENTRYPOINT [\"./entrypoint.sh\"]"},{"line_number":17,"context_line":"CMD [\"server\"]"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"RUN useradd -u 1000 -g users -d /armada armada"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Don\u0027t run \u0027zypper up\u0027, \u0027apt-get upgrade\u0027 and similar. List packages"},{"line_number":22,"context_line":"# being installed in alphabetical order to avoid possible merge"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_2666792b","line":19,"range":{"start_line":19,"start_character":15,"end_line":19,"end_character":19},"in_reply_to":"3fa7e38b_66c47160","updated":"2019-10-22 14:48:48.000000000","message":"in that case we should use a uid other than 1000, as without uid namespaces this will result in collisions with users on the host that may be undesired.","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"95d8a62ddb061decdec4a1fcc041d1bfb8934ae0","unresolved":false,"context_lines":[{"line_number":16,"context_line":"ENTRYPOINT [\"./entrypoint.sh\"]"},{"line_number":17,"context_line":"CMD [\"server\"]"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"RUN useradd -u 1000 -g users -d /armada armada"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Don\u0027t run \u0027zypper up\u0027, \u0027apt-get upgrade\u0027 and similar. List packages"},{"line_number":22,"context_line":"# being installed in alphabetical order to avoid possible merge"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_66c47160","line":19,"range":{"start_line":19,"start_character":15,"end_line":19,"end_character":19},"in_reply_to":"3fa7e38b_6b299c99","updated":"2019-10-22 14:42:26.000000000","message":"Why? We only (mostly) care that app is run under unprivileged user by default. If needed, user could be overridden on container launch.","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":23928,"name":"Pete Birley","email":"petebirley@gmail.com","username":"portdirect"},"change_message_id":"1af49c78205db0793dbb8b42ef2e3ba1de0347d9","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"RUN useradd -u 1000 -g users -d /armada armada"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Don\u0027t run \u0027zypper up\u0027, \u0027apt-get upgrade\u0027 and similar. List packages"},{"line_number":22,"context_line":"# being installed in alphabetical order to avoid possible merge"},{"line_number":23,"context_line":"# conflicts and make it easy to read. Indent commands with spaces."},{"line_number":24,"context_line":"# Use multistage container builds where possible to reduce image size and"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_4ba94022","line":21,"range":{"start_line":21,"start_character":2,"end_line":21,"end_character":55},"updated":"2019-10-22 14:11:22.000000000","message":"why?","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":23928,"name":"Pete Birley","email":"petebirley@gmail.com","username":"portdirect"},"change_message_id":"26e9b18055000148b20c3b5f710bbeba39a088ba","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"RUN useradd -u 1000 -g users -d /armada armada"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Don\u0027t run \u0027zypper up\u0027, \u0027apt-get upgrade\u0027 and similar. List packages"},{"line_number":22,"context_line":"# being installed in alphabetical order to avoid possible merge"},{"line_number":23,"context_line":"# conflicts and make it easy to read. Indent commands with spaces."},{"line_number":24,"context_line":"# Use multistage container builds where possible to reduce image size and"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_e6486188","line":21,"range":{"start_line":21,"start_character":2,"end_line":21,"end_character":55},"in_reply_to":"3fa7e38b_06b6dddd","updated":"2019-10-22 14:48:48.000000000","message":"but we are not using those params, also this logic looks to be written from the perspective of people consuming application images, rather than base distro images.","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"95d8a62ddb061decdec4a1fcc041d1bfb8934ae0","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"RUN useradd -u 1000 -g users -d /armada armada"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Don\u0027t run \u0027zypper up\u0027, \u0027apt-get upgrade\u0027 and similar. List packages"},{"line_number":22,"context_line":"# being installed in alphabetical order to avoid possible merge"},{"line_number":23,"context_line":"# conflicts and make it easy to read. Indent commands with spaces."},{"line_number":24,"context_line":"# Use multistage container builds where possible to reduce image size and"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_06b6dddd","line":21,"range":{"start_line":21,"start_character":2,"end_line":21,"end_character":55},"in_reply_to":"3fa7e38b_4ba94022","updated":"2019-10-22 14:42:26.000000000","message":"Docker Inc.\u0027s recommendation:\n\n  \u003e You should avoid RUN apt-get upgrade or dist-upgrade, as\n  \u003e many of the “essential” packages from the parent images\n  \u003e can’t upgrade inside an unprivileged container. If a\n  \u003e package contained in the parent image is out-of-date, you\n  \u003e should contact its maintainers. If you know there’s a\n  \u003e particular package, foo, that needs to be updated, use\n  \u003e apt-get install -y foo to update automatically.\n\nhttps://docs.docker.com/v17.12/develop/develop-images/dockerfile_best-practices/#apt-get","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"d067fae70c53c97119ec80aae17b766b494b0ccc","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"RUN useradd -u 1000 -g users -d /armada armada"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Don\u0027t run \u0027zypper up\u0027, \u0027apt-get upgrade\u0027 and similar. List packages"},{"line_number":22,"context_line":"# being installed in alphabetical order to avoid possible merge"},{"line_number":23,"context_line":"# conflicts and make it easy to read. Indent commands with spaces."},{"line_number":24,"context_line":"# Use multistage container builds where possible to reduce image size and"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_75c02b51","line":21,"range":{"start_line":21,"start_character":2,"end_line":21,"end_character":55},"in_reply_to":"3fa7e38b_e6486188","updated":"2019-10-29 15:30:27.000000000","message":"I think we misunderstand each other.\n\nWhen we use versioned base image, we are more or less sure that versions of software in upstream image in our image match. When we try to update OS from inside of the container, then those versions would possibly not be matching.\n\nThen all packages update could fail, because container is restricted (no separate kernel, some virtual file systems are missing, etc.).\n\nIn addition to that we want to reuse upstream tested image as much as possible, and we want to better reuse image layers cache, which update would invalidate.","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":23928,"name":"Pete Birley","email":"petebirley@gmail.com","username":"portdirect"},"change_message_id":"1af49c78205db0793dbb8b42ef2e3ba1de0347d9","unresolved":false,"context_lines":[{"line_number":23,"context_line":"# conflicts and make it easy to read. Indent commands with spaces."},{"line_number":24,"context_line":"# Use multistage container builds where possible to reduce image size and"},{"line_number":25,"context_line":"# attack surface."},{"line_number":26,"context_line":"RUN mkdir -p /armada \u0026\u0026 \\"},{"line_number":27,"context_line":"    zypper refresh \u0026\u0026 \\"},{"line_number":28,"context_line":"    zypper --non-interactive install \\"},{"line_number":29,"context_line":"      ca-certificates \\"},{"line_number":30,"context_line":"      curl \\"},{"line_number":31,"context_line":"      gcc \\"},{"line_number":32,"context_line":"      git \\"},{"line_number":33,"context_line":"      libopenssl-devel \\"},{"line_number":34,"context_line":"      make \\"},{"line_number":35,"context_line":"      netcfg \\"},{"line_number":36,"context_line":"      python3 \\"},{"line_number":37,"context_line":"      python3-devel \\"},{"line_number":38,"context_line":"      python3-pip \\"},{"line_number":39,"context_line":"      python3-setuptools \\"},{"line_number":40,"context_line":"      tar"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# ..."},{"line_number":43,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_0b610812","line":40,"range":{"start_line":26,"start_character":0,"end_line":40,"end_character":9},"updated":"2019-10-22 14:11:22.000000000","message":"when stringing commands together like this, it is best to prefix the command block with `set -ex` of similar to both allow commands run to be displayed in approximate order with their output, and also catch failures that `\u0026\u0026` will miss.","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"95d8a62ddb061decdec4a1fcc041d1bfb8934ae0","unresolved":false,"context_lines":[{"line_number":23,"context_line":"# conflicts and make it easy to read. Indent commands with spaces."},{"line_number":24,"context_line":"# Use multistage container builds where possible to reduce image size and"},{"line_number":25,"context_line":"# attack surface."},{"line_number":26,"context_line":"RUN mkdir -p /armada \u0026\u0026 \\"},{"line_number":27,"context_line":"    zypper refresh \u0026\u0026 \\"},{"line_number":28,"context_line":"    zypper --non-interactive install \\"},{"line_number":29,"context_line":"      ca-certificates \\"},{"line_number":30,"context_line":"      curl \\"},{"line_number":31,"context_line":"      gcc \\"},{"line_number":32,"context_line":"      git \\"},{"line_number":33,"context_line":"      libopenssl-devel \\"},{"line_number":34,"context_line":"      make \\"},{"line_number":35,"context_line":"      netcfg \\"},{"line_number":36,"context_line":"      python3 \\"},{"line_number":37,"context_line":"      python3-devel \\"},{"line_number":38,"context_line":"      python3-pip \\"},{"line_number":39,"context_line":"      python3-setuptools \\"},{"line_number":40,"context_line":"      tar"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# ..."},{"line_number":43,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3fa7e38b_262e79fa","line":40,"range":{"start_line":26,"start_character":0,"end_line":40,"end_character":9},"in_reply_to":"3fa7e38b_0b610812","updated":"2019-10-22 14:42:26.000000000","message":"Totally agree. Thank you. And also pipefail would be useful in some cases (curl ... | tar ...).","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"}],"doc/source/code-conventions.rst":[{"author":{"_account_id":30847,"name":"Nikolay Fedorov","email":"nfedorov@mirantis.com","username":"nfedorov"},"change_message_id":"a0d98327e3b5d26c07111c36907edd88dc4eb2d2","unresolved":false,"context_lines":[{"line_number":107,"context_line":"Makefile"},{"line_number":108,"context_line":"~~~~~~~~"},{"line_number":109,"context_line":"Each project must provide a makefile at the root of the project. The makefile"},{"line_number":110,"context_line":"should implement each of the following makefile targets:"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"-  ``images`` will produce the docker images for the component and each other"},{"line_number":113,"context_line":"   component it is responsible for building."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_9281bdc6","line":110,"range":{"start_line":110,"start_character":17,"end_line":110,"end_character":21},"updated":"2019-10-03 13:27:18.000000000","message":"Each or if avaliable? if my project doesn\u0027t have helm charts, should I have charts, dry-run  targets","commit_id":"c6b67f9b80ccb6c6c591f47b1de878b2119207ae"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d3fcee96cc8c674f37a7d8c2413edc4802b6c74","unresolved":false,"context_lines":[{"line_number":107,"context_line":"Makefile"},{"line_number":108,"context_line":"~~~~~~~~"},{"line_number":109,"context_line":"Each project must provide a makefile at the root of the project. The makefile"},{"line_number":110,"context_line":"should implement each of the following makefile targets:"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"-  ``images`` will produce the docker images for the component and each other"},{"line_number":113,"context_line":"   component it is responsible for building."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3fa7e38b_cc7bb525","line":110,"range":{"start_line":110,"start_character":17,"end_line":110,"end_character":21},"in_reply_to":"3fa7e38b_9281bdc6","updated":"2019-10-10 07:59:03.000000000","message":"It says \"should provide\", so you need those targets if you have relevant code in repository. Of course, if you don\u0027t have container images in your repositorty which are supposed to be launched in K8s (and under Helm control), then there is not much sense in having Makefile targets related to Helm charts.\n\n \u003e Each or if avaliable? if my project doesn\u0027t have helm charts,\n \u003e should I have charts, dry-run  targets","commit_id":"c6b67f9b80ccb6c6c591f47b1de878b2119207ae"},{"author":{"_account_id":22477,"name":"Matt McEuen","email":"matt.mceuen@att.com","username":"mattmceuen"},"change_message_id":"6d811bc587a39788873c0f3aa0227739689071e2","unresolved":false,"context_lines":[{"line_number":56,"context_line":"-  foo/images/foo contains the Dockerfile for ``foo``"},{"line_number":57,"context_line":"-  foo/images/bar contains the Dockerfile for ``bar``"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Each image must include the following set of labels conforming to the "},{"line_number":60,"context_line":"`OCI image annotations standard`_ as the minimum:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_74afede2","line":59,"updated":"2019-10-09 19:56:36.000000000","message":"WS","commit_id":"12a6a9d41d17374fd93f97e2847cbaaccd6d2390"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d3fcee96cc8c674f37a7d8c2413edc4802b6c74","unresolved":false,"context_lines":[{"line_number":56,"context_line":"-  foo/images/foo contains the Dockerfile for ``foo``"},{"line_number":57,"context_line":"-  foo/images/bar contains the Dockerfile for ``bar``"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Each image must include the following set of labels conforming to the "},{"line_number":60,"context_line":"`OCI image annotations standard`_ as the minimum:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_4cbee5b4","line":59,"in_reply_to":"3fa7e38b_74afede2","updated":"2019-10-10 07:59:03.000000000","message":"Done","commit_id":"12a6a9d41d17374fd93f97e2847cbaaccd6d2390"},{"author":{"_account_id":28774,"name":"Lindsey Durway","email":"v-ldurway@microsoft.com","username":"ldurway"},"change_message_id":"ae6a689c03d101f17a20246cc3d5e0f7e43842f0","unresolved":false,"context_lines":[{"line_number":92,"context_line":"~~~~~~~~~~"},{"line_number":93,"context_line":"Dockerfile file name must follow format: ``Dockerfile.\u003cdistro_suffix\u003e``, where"},{"line_number":94,"context_line":"``\u003cdistro_suffix\u003e`` matches corresponding image tag suffix. The"},{"line_number":95,"context_line":"``.\u003cdistro_suffix\u003e`` could be omited where not relevant."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Lines should be indented by a space character next to the Dockerfile"},{"line_number":98,"context_line":"instruction block they correspond to."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_f44c3d9f","line":95,"range":{"start_line":95,"start_character":30,"end_line":95,"end_character":36},"updated":"2019-10-09 20:24:34.000000000","message":"spelling: \"omitted\"","commit_id":"12a6a9d41d17374fd93f97e2847cbaaccd6d2390"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d3fcee96cc8c674f37a7d8c2413edc4802b6c74","unresolved":false,"context_lines":[{"line_number":92,"context_line":"~~~~~~~~~~"},{"line_number":93,"context_line":"Dockerfile file name must follow format: ``Dockerfile.\u003cdistro_suffix\u003e``, where"},{"line_number":94,"context_line":"``\u003cdistro_suffix\u003e`` matches corresponding image tag suffix. The"},{"line_number":95,"context_line":"``.\u003cdistro_suffix\u003e`` could be omited where not relevant."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"Lines should be indented by a space character next to the Dockerfile"},{"line_number":98,"context_line":"instruction block they correspond to."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_6cc2c136","line":95,"range":{"start_line":95,"start_character":30,"end_line":95,"end_character":36},"in_reply_to":"3fa7e38b_f44c3d9f","updated":"2019-10-10 07:59:03.000000000","message":"Done","commit_id":"12a6a9d41d17374fd93f97e2847cbaaccd6d2390"},{"author":{"_account_id":22477,"name":"Matt McEuen","email":"matt.mceuen@att.com","username":"mattmceuen"},"change_message_id":"6d811bc587a39788873c0f3aa0227739689071e2","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Dockerfile must allow base image substitiution via ``FROM`` argument. This is"},{"line_number":101,"context_line":"to allow the use of base images stored in thirt-party or internal repositories."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Dockerdile should follow best practices."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"See `example Dockerfile`_ file for reference."},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_346ad580","line":103,"range":{"start_line":103,"start_character":6,"end_line":103,"end_character":7},"updated":"2019-10-09 19:56:36.000000000","message":"typo","commit_id":"12a6a9d41d17374fd93f97e2847cbaaccd6d2390"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"3d3fcee96cc8c674f37a7d8c2413edc4802b6c74","unresolved":false,"context_lines":[{"line_number":100,"context_line":"Dockerfile must allow base image substitiution via ``FROM`` argument. This is"},{"line_number":101,"context_line":"to allow the use of base images stored in thirt-party or internal repositories."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Dockerdile should follow best practices."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"See `example Dockerfile`_ file for reference."},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa7e38b_8cbffda8","line":103,"range":{"start_line":103,"start_character":6,"end_line":103,"end_character":7},"in_reply_to":"3fa7e38b_346ad580","updated":"2019-10-10 07:59:03.000000000","message":"Done","commit_id":"12a6a9d41d17374fd93f97e2847cbaaccd6d2390"},{"author":{"_account_id":28618,"name":"Drew Walters","email":"drewwalters@microsoft.com","username":"drewwalters96"},"change_message_id":"68d8820a665ec7fa92a389140e28118a0ffec32b","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Images"},{"line_number":47,"context_line":"~~~~~~"},{"line_number":48,"context_line":"Each project that creates a `Docker`_ image will keep the Dockerfile in a"},{"line_number":49,"context_line":"directory ``images`` located at the root of the project. The images directory"},{"line_number":50,"context_line":"will contain subdirectories for each of the images created as part of that"},{"line_number":51,"context_line":"project. The subdirectory will contain the Dockerfile that can be used to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_d1c20fe9","line":48,"range":{"start_line":48,"start_character":54,"end_line":48,"end_character":68},"updated":"2019-10-16 14:00:58.000000000","message":"Since we have multi-distro support, I think we should speak about Dockerfiles in plural to avoid confusion, i.e.\n\n\u003e any dockerfiles","commit_id":"40e276194c4a725bd408071d0367a1cbd582ef05"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"78442580bde33044d0855cb3caec0ea36a1f824b","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Images"},{"line_number":47,"context_line":"~~~~~~"},{"line_number":48,"context_line":"Each project that creates a `Docker`_ image will keep the Dockerfile in a"},{"line_number":49,"context_line":"directory ``images`` located at the root of the project. The images directory"},{"line_number":50,"context_line":"will contain subdirectories for each of the images created as part of that"},{"line_number":51,"context_line":"project. The subdirectory will contain the Dockerfile that can be used to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fa7e38b_521ffe59","line":48,"range":{"start_line":48,"start_character":54,"end_line":48,"end_character":68},"in_reply_to":"3fa7e38b_d1c20fe9","updated":"2019-10-16 14:48:30.000000000","message":"Done","commit_id":"40e276194c4a725bd408071d0367a1cbd582ef05"},{"author":{"_account_id":28618,"name":"Drew Walters","email":"drewwalters@microsoft.com","username":"drewwalters96"},"change_message_id":"21bd191675c4b2184d6542bd8b8c39ae57b7c79f","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Images"},{"line_number":47,"context_line":"~~~~~~"},{"line_number":48,"context_line":"Each project that creates a `Docker`_ images will keep Dockerfiles in a"},{"line_number":49,"context_line":"directory ``images`` located at the root of the project. The images directory"},{"line_number":50,"context_line":"will contain subdirectories for each of the images created as part of that"},{"line_number":51,"context_line":"project. The subdirectory will contain Dockerfiles that can be used to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_1b144143","line":48,"range":{"start_line":48,"start_character":26,"end_line":48,"end_character":28},"updated":"2019-10-16 17:14:29.000000000","message":"this is no longer needed with the plurality","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"95d8a62ddb061decdec4a1fcc041d1bfb8934ae0","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Images"},{"line_number":47,"context_line":"~~~~~~"},{"line_number":48,"context_line":"Each project that creates a `Docker`_ images will keep Dockerfiles in a"},{"line_number":49,"context_line":"directory ``images`` located at the root of the project. The images directory"},{"line_number":50,"context_line":"will contain subdirectories for each of the images created as part of that"},{"line_number":51,"context_line":"project. The subdirectory will contain Dockerfiles that can be used to"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_06eedd8a","line":48,"range":{"start_line":48,"start_character":26,"end_line":48,"end_character":28},"in_reply_to":"3fa7e38b_1b144143","updated":"2019-10-22 14:42:26.000000000","message":"Done","commit_id":"265a67dc459a5b3cbb6e8c3384bb4765bcd3f34f"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"e29ab7d917f4a0735608f804c50df5d95bc989a8","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    org.opencontainers.image.authors\u003d\u0027airship-discuss@lists.airshipit.org, irc://#airshipit@freenode\u0027"},{"line_number":65,"context_line":"    org.opencontainers.image.url\u003d\u0027https://airshipit.org\u0027"},{"line_number":66,"context_line":"    org.opencontainers.image.documentation\u003d\u0027\u003cdocumentation on readthedocs or in repository URL\u003e\u003e\u0027"},{"line_number":67,"context_line":"    org.opencontainers.image.source\u003d\u0027\u003crepository URL\u003e\u0027"},{"line_number":68,"context_line":"    org.opencontainers.image.vendor\u003d\u0027The Airship Authors\u0027"},{"line_number":69,"context_line":"    org.opencontainers.image.licenses\u003d\u0027Apache-2.0\u0027"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_42c0be50","line":66,"range":{"start_line":66,"start_character":94,"end_line":66,"end_character":95},"updated":"2019-10-30 18:52:04.000000000","message":"nit: one of the brackets can be removed.","commit_id":"da435505726db22290f117711d47161deeea3d91"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"962dcf335917cc733dbd2da3c6fa11dc64ca235d","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    org.opencontainers.image.authors\u003d\u0027airship-discuss@lists.airshipit.org, irc://#airshipit@freenode\u0027"},{"line_number":65,"context_line":"    org.opencontainers.image.url\u003d\u0027https://airshipit.org\u0027"},{"line_number":66,"context_line":"    org.opencontainers.image.documentation\u003d\u0027\u003cdocumentation on readthedocs or in repository URL\u003e\u003e\u0027"},{"line_number":67,"context_line":"    org.opencontainers.image.source\u003d\u0027\u003crepository URL\u003e\u0027"},{"line_number":68,"context_line":"    org.opencontainers.image.vendor\u003d\u0027The Airship Authors\u0027"},{"line_number":69,"context_line":"    org.opencontainers.image.licenses\u003d\u0027Apache-2.0\u0027"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_50e839b2","line":66,"range":{"start_line":66,"start_character":94,"end_line":66,"end_character":95},"in_reply_to":"3fa7e38b_42c0be50","updated":"2019-11-06 13:31:32.000000000","message":"Done","commit_id":"da435505726db22290f117711d47161deeea3d91"},{"author":{"_account_id":28774,"name":"Lindsey Durway","email":"v-ldurway@microsoft.com","username":"ldurway"},"change_message_id":"18f57059d46937cf540649cfe78984a0163ddc2b","unresolved":false,"context_lines":[{"line_number":82,"context_line":"- ``:\u003cbranch\u003e_\u003cdistro_suffix\u003e`` - latest image built from specific branch"},{"line_number":83,"context_line":"- ``:latest_\u003cdistro_suffix\u003e`` - latest image built from master"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"The ``_\u003cdistro suffix\u003e`` (e.g. ``_ubuntu_xenial``) could be omited. See"},{"line_number":86,"context_line":"`Airship Multiple Linux Distribution Support`_ specification for details."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Images should follow best practices for the container images. Be slim and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_2b33cbf9","line":85,"range":{"start_line":85,"start_character":60,"end_line":85,"end_character":66},"updated":"2019-12-16 16:49:15.000000000","message":"spelling: \"omitted\"","commit_id":"cd2d3868af06a56f1e3b49d1ebc8001f6043976b"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"9fcb9831a131388fc8cfb2ddf83a254637823d61","unresolved":false,"context_lines":[{"line_number":82,"context_line":"- ``:\u003cbranch\u003e_\u003cdistro_suffix\u003e`` - latest image built from specific branch"},{"line_number":83,"context_line":"- ``:latest_\u003cdistro_suffix\u003e`` - latest image built from master"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"The ``_\u003cdistro suffix\u003e`` (e.g. ``_ubuntu_xenial``) could be omited. See"},{"line_number":86,"context_line":"`Airship Multiple Linux Distribution Support`_ specification for details."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Images should follow best practices for the container images. Be slim and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1f493fa4_4b186874","line":85,"range":{"start_line":85,"start_character":60,"end_line":85,"end_character":66},"in_reply_to":"3fa7e38b_2b33cbf9","updated":"2020-04-23 15:11:30.000000000","message":"Done","commit_id":"cd2d3868af06a56f1e3b49d1ebc8001f6043976b"},{"author":{"_account_id":28774,"name":"Lindsey Durway","email":"v-ldurway@microsoft.com","username":"ldurway"},"change_message_id":"18f57059d46937cf540649cfe78984a0163ddc2b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"instruction block they correspond to."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Dockerfile must allow base image substitiution via ``FROM`` argument. This is"},{"line_number":101,"context_line":"to allow the use of base images stored in thirt-party or internal repositories."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Dockerfile should follow best practices. Use multistage container builds where"},{"line_number":104,"context_line":"possible to reduce image size and attack surface. ``RUN`` statements should"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_8b475f53","line":101,"range":{"start_line":101,"start_character":42,"end_line":101,"end_character":47},"updated":"2019-12-16 16:49:15.000000000","message":"typo: change \"thirt\" to \"third\"","commit_id":"cd2d3868af06a56f1e3b49d1ebc8001f6043976b"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"9fcb9831a131388fc8cfb2ddf83a254637823d61","unresolved":false,"context_lines":[{"line_number":98,"context_line":"instruction block they correspond to."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Dockerfile must allow base image substitiution via ``FROM`` argument. This is"},{"line_number":101,"context_line":"to allow the use of base images stored in thirt-party or internal repositories."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Dockerfile should follow best practices. Use multistage container builds where"},{"line_number":104,"context_line":"possible to reduce image size and attack surface. ``RUN`` statements should"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1f493fa4_6b1d6465","line":101,"range":{"start_line":101,"start_character":42,"end_line":101,"end_character":47},"in_reply_to":"3fa7e38b_8b475f53","updated":"2020-04-23 15:11:30.000000000","message":"Done","commit_id":"cd2d3868af06a56f1e3b49d1ebc8001f6043976b"},{"author":{"_account_id":28774,"name":"Lindsey Durway","email":"v-ldurway@microsoft.com","username":"ldurway"},"change_message_id":"18f57059d46937cf540649cfe78984a0163ddc2b","unresolved":false,"context_lines":[{"line_number":172,"context_line":"Python PEP-8 Formatting"},{"line_number":173,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Python should be formatted via YAPF, the knobs for YAPF can be specified in"},{"line_number":176,"context_line":"the project\u0027s root directory in \u0027.style.yapf\u0027 the contents of this file should"},{"line_number":177,"context_line":"be::"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_8b7e7f6b","line":175,"range":{"start_line":175,"start_character":31,"end_line":175,"end_character":40},"updated":"2019-12-16 16:49:15.000000000","message":"Make into separate sentences: \"...YAPF. The....\"","commit_id":"cd2d3868af06a56f1e3b49d1ebc8001f6043976b"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"9fcb9831a131388fc8cfb2ddf83a254637823d61","unresolved":false,"context_lines":[{"line_number":172,"context_line":"Python PEP-8 Formatting"},{"line_number":173,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Python should be formatted via YAPF, the knobs for YAPF can be specified in"},{"line_number":176,"context_line":"the project\u0027s root directory in \u0027.style.yapf\u0027 the contents of this file should"},{"line_number":177,"context_line":"be::"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"1f493fa4_0b0e6031","line":175,"range":{"start_line":175,"start_character":31,"end_line":175,"end_character":40},"in_reply_to":"3fa7e38b_8b7e7f6b","updated":"2020-04-23 15:11:30.000000000","message":"Done","commit_id":"cd2d3868af06a56f1e3b49d1ebc8001f6043976b"},{"author":{"_account_id":28774,"name":"Lindsey Durway","email":"v-ldurway@microsoft.com","username":"ldurway"},"change_message_id":"18f57059d46937cf540649cfe78984a0163ddc2b","unresolved":false,"context_lines":[{"line_number":173,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Python should be formatted via YAPF, the knobs for YAPF can be specified in"},{"line_number":176,"context_line":"the project\u0027s root directory in \u0027.style.yapf\u0027 the contents of this file should"},{"line_number":177,"context_line":"be::"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"  [style]"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_cb8b1767","line":176,"range":{"start_line":176,"start_character":29,"end_line":176,"end_character":49},"updated":"2019-12-16 16:49:15.000000000","message":"Make into separate sentences: \"...in \u0027.style.yapf\u0027. The....\"","commit_id":"cd2d3868af06a56f1e3b49d1ebc8001f6043976b"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"9fcb9831a131388fc8cfb2ddf83a254637823d61","unresolved":false,"context_lines":[{"line_number":173,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Python should be formatted via YAPF, the knobs for YAPF can be specified in"},{"line_number":176,"context_line":"the project\u0027s root directory in \u0027.style.yapf\u0027 the contents of this file should"},{"line_number":177,"context_line":"be::"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"  [style]"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1f493fa4_2b135c5e","line":176,"range":{"start_line":176,"start_character":29,"end_line":176,"end_character":49},"in_reply_to":"3fa7e38b_cb8b1767","updated":"2020-04-23 15:11:30.000000000","message":"Done","commit_id":"cd2d3868af06a56f1e3b49d1ebc8001f6043976b"}],"doc/source/develop/code-conventions.rst":[{"author":{"_account_id":23781,"name":"Stanislav Egorov","email":"realsystem@gmail.com","username":"StasEgorov"},"change_message_id":"376ba816fef5fd6df5ca23cc6a59d65836638c07","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Lines should be indented by a space character next to the Dockerfile"},{"line_number":98,"context_line":"instruction block they correspond to."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Dockerfile must allow base image substitiution via ``FROM`` argument. This is"},{"line_number":101,"context_line":"to allow the use of base images stored in third-party or internal repositories."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Dockerfile should follow best practices. Use multistage container builds where"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7f6b1bfe_ccf5e885","line":100,"range":{"start_line":100,"start_character":33,"end_line":100,"end_character":46},"updated":"2020-10-14 04:18:26.000000000","message":"substitution","commit_id":"3a01bb12b81b44dce7fdcb50c58e31dc95894344"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"b79f0cd64c66812d86cb78ea70e758350f7a126e","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Lines should be indented by a space character next to the Dockerfile"},{"line_number":98,"context_line":"instruction block they correspond to."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Dockerfile must allow base image substitiution via ``FROM`` argument. This is"},{"line_number":101,"context_line":"to allow the use of base images stored in third-party or internal repositories."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Dockerfile should follow best practices. Use multistage container builds where"}],"source_content_type":"text/x-rst","patch_set":12,"id":"7f6b1bfe_c7682123","line":100,"range":{"start_line":100,"start_character":33,"end_line":100,"end_character":46},"in_reply_to":"7f6b1bfe_ccf5e885","updated":"2020-10-14 06:25:15.000000000","message":"Done","commit_id":"3a01bb12b81b44dce7fdcb50c58e31dc95894344"}]}
