Commit Graph

28 Commits

Author SHA1 Message Date
Maximilian Hils b14f9611f2
fix #6267 (#6270) 2023-07-20 10:45:43 +00:00
Vadim 2261346334
DockerHub-README.md: reword ambiguous command (#6080)
* DockerHub-README.md: reword ambiguous command

Being unfamiliar with the docker options, I thought the square brackets could be part of the command.

Instead, they refer to the sentence *after* the command, that is, they meant "optionally".

To remove the ambiguity, I put into onto different lines with an explanation.

* DockerHub-README.md: reword again, -v by default

- only leave the command with -v as an example
- grammar
- httpS link
2023-04-27 08:49:15 +00:00
Maksym Medvied 5969f25db4
pass signals to mitmproxy in docker-entrypoint.sh (#5920)
Current docker-entrypoint.sh [0][1] runs

    gosu mitmproxy "$@"

for mitmproxy, mitmdump and mitmweb. There is a problem with this
approach: bash becomes a parent process for mitmproxy [2][3], but when
signals are sent by docker-compose to mitmproxy container they are sent
to bash, but they are not delivered to mitmproxy [4]. This leads to a
slow shutdown of the container, because by default docker sends SIGTERM,
waits for 10 seconds and then sends SIGKILL if the container is still
alive [5].

This patch solves the issue by replacing bash process with mitmproxy
entirely using "exec" - this way the signals are delivered to mitmproxy
directly.

To test the patch a Dockerfile [6] that applies the patch to the release
image from the dockerhub could be used along with slighly modified
compose.yml [7]. With the patch bash is no longer running inside the
container [8] and the `docker compose down` time on my machine drops
from 10.3s to 0.5s [9].

0. https://github.com/mitmproxy/mitmproxy/blob/main/release/docker/docker-entrypoint.sh
1. To confirm that this is what's actually in the image:
    ```
    > docker run mitmproxy/mitmproxy grep gosu /usr/local/bin/docker-entrypoint.sh
      gosu mitmproxy "$@"
    ```
2. compose.yaml
    ```
    services:
      mitmproxy-test:
        image: mitmproxy/mitmproxy
        command: ["mitmweb"]
        # https://github.com/mitmproxy/mitmproxy/issues/5727
        stdin_open: true
        tty: true
    ```
3. We can see that the parent PID for mitmweb is the pid of bash.
    ```
    > docker compose up -d
    [+] Running 2/2
     ⠿ Network mitmproxy_default             Created           0.1s
     ⠿ Container mitmproxy-mitmproxy-test-1  Started           0.5s
    > docker compose top
    mitmproxy-mitmproxy-test-1
    UID    PID     PPID    C    STIME   TTY     TIME       CMD
    root   31227   31202   0    16:12   pts/0   00:00:00   /bin/bash /usr/local/bin/docker-entrypoint.sh mitmweb
    root   31314   31227   1    16:12   pts/0   00:00:01   /usr/local/bin/python /usr/local/bin/mitmweb
    ```
4. https://unix.stackexchange.com/a/196053
5. https://docs.docker.com/compose/faq/#why-do-my-services-take-10-seconds-to-recreate-or-stop
6. Dockerfile:
    ```
    FROM mitmproxy/mitmproxy

    RUN sed -i 's/^  gosu mitmproxy/  exec gosu mitmproxy/' /usr/local/bin/docker-entrypoint.sh
    ```
7. compose.yaml to build an image from Dockerfile and use it:
    ```
    services:
      mitmproxy-test:
        build:
          dockerfile: Dockerfile
          context: .
        command: ["mitmweb"]
        # https://github.com/mitmproxy/mitmproxy/issues/5727
        stdin_open: true
        tty: true
    ```
8. With the patch:
    ```
    > docker compose top
    mitmproxy-mitmproxy-test-1
    UID    PID    PPID   C    STIME   TTY     TIME       CMD
    root   4994   4970   50   17:00   pts/0   00:00:02   /usr/local/bin/python /usr/local/bin/mitmweb
     ```
9. Without the patch:
    ```
    > docker compose down
    [+] Running 2/2
     ⠿ Container mitmproxy-mitmproxy-test-1  Removed          10.2s
     ⠿ Network mitmproxy_default             Removed           0.1s
    ```
   With the patch:
    ```
    > docker compose down
    [+] Running 2/2
     ⠿ Container mitmproxy-mitmproxy-test-1  Removed           0.4s
     ⠿ Network mitmproxy_default             Removed           0.1s
    ```
2023-02-09 11:43:47 +01:00
Maximilian Hils 597eaf4148
properly assume Docker permissions, fix #5700 (#5702) 2022-10-31 18:16:00 +01:00
Maximilian Hils b5302ab522
Upgrade to Python 3.11 (#5678)
* upgrade to Python 3.11

* compatibility fixes
2022-10-26 11:13:37 +00:00
Maximilian Hils 8023b22498
Docker: assume uid of who holds permissions (#5550)
* Docker: assume uid of who holds permissions

* add docs
2022-09-08 17:42:09 +00:00
Maximilian Hils 218c942808 docker: use Python 3.10 2022-03-19 15:38:30 +01:00
Christian Zenker eb43ae4709
Use the slim base image for container (#4889) 2021-11-16 12:49:12 +01:00
Thomas Kriechbaumer fffed0cb3a bump docker
closes #4846
2021-10-20 19:57:21 +02:00
Maximilian Hils 34a620e57b
Docker: Add aarch64 Images (#4637)
* feat(cibuild): add buildx multi arch builds

* chore: add changelog for arm64

* temporarily enable docker ci job for PRs

* Update cibuild.py

* Update cibuild.py

* chore(cibuild): create docker-container xbuilder

* chore(cibuild): fix lint

* temporarily remove run check to see error message

* Update cibuild.py

* Update cibuild.py

* Update cibuild.py

* Update main.yml

* Update main.yml

* Update main.yml

* Update cibuild.py

* Update cibuild.py

* Update Dockerfile

* cleanup #1

* next test

* move to test branch

* fixup

* now upload

* enable armv6/7

* use multi-stage build to reduce image size

* armv7?

* drop armv6/armv7

Co-authored-by: Niels Hofmans <hello@ironpeak.be>
2021-06-15 13:47:50 +00:00
Maximilian Hils 518fb94124
Harden CI Pipeline (#4590)
* ci: use actions/checkout@v2

* ci: always specify python version

* ci: pin external actions

* ci: split docs job, pin immediate dependencies

* ci: correct hugo sha256sum

* ci: full repo fetch depth for tests

* ci: use pip-tools to pin all the things

* ci: minor fixes

* ci: fixup

* ci: streamline pinned install

* ci: minor fixes

* ci: fix py3.8 pins

* ci: don't persist checkout credentials

* ci: always run local linter

* ci: test docs deployment from actions-hardening branch

* ci: fix docs job

* ci: pass in credentials

* ci: fix file permissions

* ci: try harder to fix docs deploy

* ci: fix docker artifact name

* Revert "ci: test docs deployment from actions-hardening branch"

This reverts commit 30cfb7a814.

* unpin PyPI dependencies

* ci: install tox first

* ci: fixups

* ci: fixups

* ci: fixups

* ci: fixups
2021-05-11 11:17:09 +02:00
Maximilian Hils 1b0fce6aba Revert "Copy examples into Docker image (#4447)"
This reverts commit a5ed1d377b.
2021-04-05 10:31:46 +02:00
Anatoli Babenia a5ed1d377b
Copy examples into Docker image (#4447) 2021-04-05 10:20:52 +02:00
Peter Dave Hello 66c8ecc71e
docker: avoid additional apt packages by `--no-install-recommends` (#4543)
This will help we keep the image not too heavy that caused by those
additional, suggestion apt packages.

Only install the packages we explicitly want.
2021-04-05 10:09:34 +02:00
Maximilian Hils ead33008bc master branch -> main branch 2021-03-30 15:30:45 +02:00
Maximilian Hils e40bf0251d
docker: build from release dir to speed up context sending (#4498) 2021-03-12 07:45:21 +00:00
Peter Dave Hello 123342ea0b
Improve Markdown syntax(styling) (#4496)
* Improve Markdown syntax

- Add missing blank lines
- Remove trailing spaces
- Remove additional blank lines
- Fix indentation consistency and correctness

* Update addons-examples.md

Co-authored-by: Maximilian Hils <github@maximilianhils.com>
2021-03-11 19:13:02 +01:00
Peter Dave Hello 27ba85bc30
Switch Docker release to be based on Debian instead of Alpine (#4493) 2021-03-11 16:49:07 +01:00
Thomas Kriechbaumer aca7284ab6 post-release updates 2020-11-01 16:12:49 +01:00
Thomas Kriechbaumer df6bbf1d4e fix docker entrypoint
fixes #3933
2020-04-13 12:20:52 +02:00
Thomas Kriechbaumer ebc7833d04 drop Docker images for ARMv7 2020-04-13 09:46:45 +02:00
Thomas Kriechbaumer 55527c00eb docs: rename docs scripts and improve template 2020-04-11 12:25:56 +02:00
Lucas Ramage cea443f21c Rename web-iface to web-host
Bug: https://github.com/mitmproxy/mitmproxy/issues/3891
2020-04-05 10:36:09 -04:00
Thomas Kriechbaumer f6405abda2
Merge pull request #3329 from Kriechi/readme-slogan
update readme slogan
2019-09-28 16:45:00 +02:00
Thomas Kriechbaumer 2fb2b48a06 bump dependencies 2018-12-02 15:48:20 +01:00
Thomas Kriechbaumer f95784ba9d update readme slogan 2018-09-21 10:38:25 +02:00
Thomas Kriechbaumer 73577eb607 update docker security warning 2018-09-18 20:42:48 +02:00
Thomas Kriechbaumer cf15da1ed5 add docker security warning 2018-09-15 14:01:34 +02:00