nonroot CentOS Docker image (#9280)
* Updates CentOS Docker image build process * rename build.Dockerfile
This commit is contained in:
parent
e8e0b08f17
commit
31291ebd35
@ -1,3 +1,42 @@
|
|||||||
Usage
|
## Usage
|
||||||
|
|
||||||
```docker build -f docker/ubuntu/Dockerfile --tag ethcore/parity:branch_or_tag_name .```
|
```docker build -f docker/ubuntu/Dockerfile --tag ethcore/parity:branch_or_tag_name .```
|
||||||
|
|
||||||
|
## Usage - CentOS
|
||||||
|
|
||||||
|
Builds a lightweight non-root Parity docker image:
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://github.com/paritytech/parity-ethereum.git
|
||||||
|
cd parity-ethereum
|
||||||
|
./docker/centos/build.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Fully customised build:
|
||||||
|
```
|
||||||
|
PARITY_IMAGE_REPO=my-personal/parity \
|
||||||
|
PARITY_BUILDER_IMAGE_TAG=build-latest \
|
||||||
|
PARITY_RUNNER_IMAGE_TAG=centos-parity-experimental \
|
||||||
|
./docker/centos/build.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Default values:
|
||||||
|
```
|
||||||
|
# The image name
|
||||||
|
PARITY_IMAGE_REPO - parity/parity
|
||||||
|
|
||||||
|
# The tag to be used for builder image, git commit sha will be appended
|
||||||
|
PARITY_BUILDER_IMAGE_TAG - build
|
||||||
|
|
||||||
|
# The tag to be used for runner image
|
||||||
|
PARITY_RUNNER_IMAGE_TAG - latest
|
||||||
|
```
|
||||||
|
|
||||||
|
All default ports you might use will be exposed:
|
||||||
|
```
|
||||||
|
# secret
|
||||||
|
# ipfs store ui rpc ws listener discovery
|
||||||
|
# ↓ ↓ ↓ ↓ ↓ ↓ ↓
|
||||||
|
EXPOSE 5001 8082 8083 8180 8545 8546 30303/tcp 30303/udp
|
||||||
|
```
|
||||||
|
@ -1,36 +1,28 @@
|
|||||||
FROM centos:latest
|
FROM centos:latest
|
||||||
WORKDIR /build
|
|
||||||
|
|
||||||
# install tools and dependencies
|
RUN mkdir -p /opt/parity/data && \
|
||||||
RUN yum -y update&& \
|
chmod g+rwX /opt/parity/data && \
|
||||||
yum install -y git make gcc-c++ gcc file binutils cmake
|
mkdir -p /opt/parity/release
|
||||||
|
|
||||||
# install rustup
|
COPY parity/parity /opt/parity/release
|
||||||
RUN curl -sSf https://static.rust-lang.org/rustup.sh -o rustup.sh &&\
|
|
||||||
ls&&\
|
|
||||||
sh rustup.sh --disable-sudo
|
|
||||||
|
|
||||||
# show backtraces
|
WORKDIR /opt/parity/data
|
||||||
ENV RUST_BACKTRACE 1
|
|
||||||
|
|
||||||
# set compiler
|
# exposing default ports
|
||||||
ENV CXX g++
|
#
|
||||||
ENV CC gcc
|
# secret
|
||||||
|
# ipfs store ui rpc ws listener discovery
|
||||||
|
# ↓ ↓ ↓ ↓ ↓ ↓ ↓
|
||||||
|
EXPOSE 5001 8082 8083 8180 8545 8546 30303/tcp 30303/udp
|
||||||
|
|
||||||
# show tools
|
# switch to non-root user
|
||||||
RUN rustc -vV && \
|
USER 1001
|
||||||
cargo -V && \
|
|
||||||
gcc -v &&\
|
|
||||||
g++ -v
|
|
||||||
|
|
||||||
# build parity
|
#if no base path provided, assume it's current workdir
|
||||||
ADD . /build/parity
|
CMD ["--base-path","."]
|
||||||
RUN cd parity&&\
|
ENTRYPOINT ["/opt/parity/release/parity"]
|
||||||
cargo build --release --verbose && \
|
|
||||||
ls /build/parity/target/release/parity && \
|
|
||||||
strip /build/parity/target/release/parity
|
|
||||||
|
|
||||||
RUN file /build/parity/target/release/parity
|
|
||||||
|
|
||||||
EXPOSE 8080 8545 8180
|
|
||||||
ENTRYPOINT ["/build/parity/target/release/parity"]
|
|
||||||
|
25
docker/centos/Dockerfile.build
Normal file
25
docker/centos/Dockerfile.build
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
FROM centos:latest
|
||||||
|
|
||||||
|
WORKDIR /build
|
||||||
|
|
||||||
|
ADD . /build/parity-ethereum
|
||||||
|
|
||||||
|
RUN yum -y update && \
|
||||||
|
yum install -y systemd-devel git make gcc-c++ gcc file binutils && \
|
||||||
|
curl -L "https://cmake.org/files/v3.12/cmake-3.12.0-Linux-x86_64.tar.gz" -o cmake.tar.gz && \
|
||||||
|
tar -xzf cmake.tar.gz && \
|
||||||
|
cp -r cmake-3.12.0-Linux-x86_64/* /usr/ && \
|
||||||
|
curl https://sh.rustup.rs -sSf | sh -s -- -y && \
|
||||||
|
PATH=/root/.cargo/bin:$PATH && \
|
||||||
|
RUST_BACKTRACE=1 && \
|
||||||
|
rustc -vV && \
|
||||||
|
cargo -V && \
|
||||||
|
gcc -v && \
|
||||||
|
g++ -v && \
|
||||||
|
cmake --version && \
|
||||||
|
cd parity-ethereum && \
|
||||||
|
cargo build --verbose --release --features final && \
|
||||||
|
strip /build/parity-ethereum/target/release/parity && \
|
||||||
|
file /build/parity-ethereum/target/release/parity
|
||||||
|
|
||||||
|
|
29
docker/centos/build.sh
Executable file
29
docker/centos/build.sh
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
# The image name
|
||||||
|
PARITY_IMAGE_REPO=${PARITY_IMAGE_REPO:-parity/parity}
|
||||||
|
# The tag to be used for builder image
|
||||||
|
PARITY_BUILDER_IMAGE_TAG=${PARITY_BUILDER_IMAGE_TAG:-build}
|
||||||
|
# The tag to be used for runner image
|
||||||
|
PARITY_RUNNER_IMAGE_TAG=${PARITY_RUNNER_IMAGE_TAG:-latest}
|
||||||
|
|
||||||
|
echo Building $PARITY_IMAGE_REPO:$PARITY_BUILDER_IMAGE_TAG-$(git log -1 --format="%H")
|
||||||
|
docker build --no-cache -t $PARITY_IMAGE_REPO:$PARITY_BUILDER_IMAGE_TAG-$(git log -1 --format="%H") . -f docker/centos/Dockerfile.build
|
||||||
|
|
||||||
|
echo Creating $PARITY_BUILDER_IMAGE_TAG-$(git log -1 --format="%H"), extracting binary
|
||||||
|
docker create --name extract $PARITY_IMAGE_REPO:$PARITY_BUILDER_IMAGE_TAG-$(git log -1 --format="%H")
|
||||||
|
mkdir docker/centos/parity
|
||||||
|
docker cp extract:/build/parity-ethereum/target/release/parity docker/centos/parity
|
||||||
|
|
||||||
|
echo Building $PARITY_IMAGE_REPO:$PARITY_RUNNER_IMAGE_TAG
|
||||||
|
docker build --no-cache -t $PARITY_IMAGE_REPO:$PARITY_RUNNER_IMAGE_TAG docker/centos/ -f docker/centos/Dockerfile
|
||||||
|
|
||||||
|
echo Cleaning up ...
|
||||||
|
rm -rf docker/centos/parity
|
||||||
|
docker rm -f extract
|
||||||
|
docker rmi -f $PARITY_IMAGE_REPO:$PARITY_BUILDER_IMAGE_TAG-$(git log -1 --format="%H")
|
||||||
|
|
||||||
|
echo Echoing Parity version:
|
||||||
|
docker run $PARITY_IMAGE_REPO:$PARITY_RUNNER_IMAGE_TAG --version
|
||||||
|
|
||||||
|
echo Done.
|
Loading…
Reference in New Issue
Block a user