Skip to content
This repository has been archived by the owner on Nov 6, 2020. It is now read-only.

Do not use the home directory as the working dir in docker #9834

Merged
merged 2 commits into from
Nov 22, 2018
Merged

Do not use the home directory as the working dir in docker #9834

merged 2 commits into from
Nov 22, 2018

Conversation

fubhy
Copy link
Contributor

@fubhy fubhy commented Oct 30, 2018

Moving the binary and the entry point to the home directory makes using the docker image in Kubernetes really hard. At the same time, there is no good reason to do so as far as I can tell (all that we want is to use a non-root user which we can absolutely do even without the home directory).

@parity-cla-bot
Copy link

It looks like @fubhy hasn't signed our Contributor License Agreement, yet.

The purpose of a CLA is to ensure that the guardian of a project's outputs has the necessary ownership or grants of rights over all contributions to allow them to distribute under the chosen licence.
Wikipedia

You can read and sign our full Contributor License Agreement at the following URL: https://cla.parity.io

Once you've signed, please reply to this thread with [clabot:check] to prove it.

Many thanks,

Parity Technologies CLA Bot

@fubhy
Copy link
Contributor Author

fubhy commented Oct 30, 2018

[clabot:check]

@parity-cla-bot
Copy link

It looks like @fubhy signed our Contributor License Agreement. 👍

Many thanks,

Parity Technologies CLA Bot

@5chdn 5chdn added this to the 2.3 milestone Nov 1, 2018
@5chdn 5chdn added A0-pleasereview 🤓 Pull request needs code review. M1-ci 🙉 Continuous integration. labels Nov 1, 2018
@fubhy
Copy link
Contributor Author

fubhy commented Nov 5, 2018

To be honest, I can't think of a scenario where one would want to run the docker image without mounting the base path and passing a custom path to --base-path.

On the other hand, it does not hurt to create the home directory as long as we don't move any binaries or such there.

@asymmetric
Copy link
Contributor

For my curiosity, what was the problem in k8s with having the binary under ~/.bin?

@fubhy
Copy link
Contributor Author

fubhy commented Nov 5, 2018

Because by default, kubernetes runs under a random UID and GID as an additional security precaution.

K8s suggests to not rely.on the USER directive at all.

It's possible to configure your way around it of course but that's a bit of a uneccesary hassle

@tomusdrw tomusdrw added A8-looksgood 🦄 Pull request is reviewed well. and removed A0-pleasereview 🤓 Pull request needs code review. labels Nov 22, 2018
@tomusdrw tomusdrw merged commit 4ee49f0 into openethereum:master Nov 22, 2018
@5chdn
Copy link
Contributor

5chdn commented Nov 27, 2018

This broke our docker builds

5chdn pushed a commit that referenced this pull request Nov 27, 2018
* Do not create a home directory.

* Re-add -m flag
@5chdn 5chdn mentioned this pull request Nov 27, 2018
10 tasks
5chdn added a commit that referenced this pull request Nov 28, 2018
* version: bump stable to 2.1.7

* Adjust requests costs for light client (#9925)

* PIP Table Cost relative to average peers instead of max peers

* Add tracing in PIP new_cost_table

* Update stat peer_count

* Use number of leeching peers for Light serve costs

* Fix test::light_params_load_share_depends_on_max_peers (wrong type)

* Remove (now) useless test

* Remove `load_share` from LightParams.Config
Prevent div. by 0

* Add LEECHER_COUNT_FACTOR

* PR Grumble: u64 to u32 for f64 casting

* Prevent u32 overflow for avg_peer_count

* Add tests for LightSync::Statistics

* Fix empty steps (#9939)

* Don't send empty step twice or empty step then block.

* Perform basic validation of locally sealed blocks.

* Don't include empty step twice.

* prevent silent errors in daemon mode, closes #9367 (#9946)

* Fix light client informant while syncing (#9932)

* Add `is_idle` to LightSync to check importing status

* Use SyncStateWrapper to make sure is_idle gets updates

* Update is_major_import to use verified queue size as well

* Add comment for `is_idle`

* Add Debug to `SyncStateWrapper`

* `fn get` -> `fn into_inner`

*  ci: rearrange pipeline by logic (#9970)

* ci: rearrange pipeline by logic

* ci: rename docs script

* Add readiness check for docker container (#9804)

* Update Dockerfile

Since parity is built for "mission critical use", I thought other operators may see the need for this.

Adding the `curl` and `jq` commands allows for an extremely simple health check to be usable in container orchestrators.

For example. Here is a health check for a parity docker container running in Kubernetes.

This can be setup as a readiness Probe that would prevent clustered nodes that aren't ready from serving traffic.

```bash
#!/bin/bash

ETH_SYNCING=$(curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://localhost:8545 -H 'Content-Type: application/json')
RESULT=$(echo "$ETH_SYNCING | jq -r .result)

if [ "$RESULT" == "false" ]; then
  echo "Parity is ready to start accepting traffic"
  exit 0
else
  echo "Parity is still syncing the blockchain"
  exit 1
fi
```

* add sync check script

* Fix docker script (#9854)


* Dockerfile: change source path of the newly added check_sync.sh (#9869)

* Do not use the home directory as the working dir in docker (#9834)

* Do not create a home directory.

* Re-add -m flag

* fix docker build (#9971)

* bump smallvec to 0.6 in ethcore-light, ethstore and whisper (#9588)

* bump smallvec to 0.6 in ethcore-light, ethstore and whisper

* bump transaction-pool

* Fix test.

* patch cargo to use tokio-proto from git repo

this makes sure we no longer depend on smallvec 0.2.1 which is
affected by servo/rust-smallvec#96

* use patched version of untrusted 0.5.1

* ci: allow audit to fail
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A8-looksgood 🦄 Pull request is reviewed well. M1-ci 🙉 Continuous integration.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants