lightweight docker container and docker volumes
Reviewed-on: SGX/hacker-challenge-sgx#3 Co-authored-by: Jakub Doka <jakub.doka2@gmail.com> Co-committed-by: Jakub Doka <jakub.doka2@gmail.com>
This commit is contained in:
		
							parent
							
								
									09a84a15f3
								
							
						
					
					
						commit
						c2e751d893
					
				| @ -30,6 +30,12 @@ curl localhost:your-port | |||||||
| 
 | 
 | ||||||
| The node homepage source is also [here](./src/HOMEPAGE.md). | The node homepage source is also [here](./src/HOMEPAGE.md). | ||||||
| 
 | 
 | ||||||
|  | ## Production build | ||||||
|  | 
 | ||||||
|  | ```bash | ||||||
|  | ./scripts/build-container.sh | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
| ## Contributing to the challenge | ## Contributing to the challenge | ||||||
| 
 | 
 | ||||||
| Don't forget to run `cargo clippy` and `cargo fmt` before submitting a PR. | Don't forget to run `cargo clippy` and `cargo fmt` before submitting a PR. | ||||||
|  | |||||||
| @ -1,6 +1,22 @@ | |||||||
| FROM occlum/occlum:latest-ubuntu20.04 | FROM occlum/occlum:latest-ubuntu20.04 AS build | ||||||
|  | 
 | ||||||
|  | WORKDIR / | ||||||
|  | RUN mkdir sgx_libs &&\ | ||||||
|  |         cp /usr/lib/x86_64-linux-gnu/libsgx_* sgx_libs/ &&\ | ||||||
|  |         cp /usr/lib/x86_64-linux-gnu/libdcap_quoteprov.so.1 sgx_libs/libdcap_quoteprov.so | ||||||
|  | 
 | ||||||
|  | FROM ubuntu:20.04 | ||||||
|  | 
 | ||||||
|  | RUN apt update -y && apt install -y jq curl | ||||||
|  | 
 | ||||||
| COPY challenge.sh /challenge.sh | COPY challenge.sh /challenge.sh | ||||||
| COPY challenge.tar.gz /challenge.tar.gz | COPY challenge.tar.gz /challenge.tar.gz | ||||||
| COPY challenge.qcnl.conf /etc/sgx_default_qcnl.conf | COPY challenge.qcnl.conf /etc/sgx_default_qcnl.conf | ||||||
|  | 
 | ||||||
|  | COPY --from=build /opt/occlum/build/bin/occlum-run /opt/occlum/build/bin/occlum-run | ||||||
|  | COPY --from=build /opt/occlum/build/bin/occlum /usr/bin/occlum | ||||||
|  | COPY --from=build /sgx_libs /sgx_libs | ||||||
|  | RUN cp /sgx_libs/* /usr/lib/x86_64-linux-gnu/ | ||||||
|  | 
 | ||||||
| WORKDIR / | WORKDIR / | ||||||
| ENTRYPOINT ["/challenge.sh"] | ENTRYPOINT ["/challenge.sh"] | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								scripts/build-container.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										20
									
								
								scripts/build-container.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,20 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | echo "Building the hacker-challenge docker image" | ||||||
|  | 
 | ||||||
|  | if ! command -v docker 2>&1 >/dev/null | ||||||
|  | then | ||||||
|  |     echo "docker not found, please install docker" | ||||||
|  |     exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ ! -e challenge_instance/challenge.tar.gz ]; then | ||||||
|  |   echo "Please build the challenge first, see README.md" | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | cd docker | ||||||
|  | cp ../challenge_instance/challenge.tar.gz challenge.tar.gz | ||||||
|  | docker build -f challenge.Dockerfile -t hacker-challenge:latest . | ||||||
|  | cd .. | ||||||
|  | 
 | ||||||
|  | echo "Container named 'hacker-challenge' built" | ||||||
| @ -12,10 +12,11 @@ if [ "$prerequisites" == "--prep" ]; then | |||||||
|     rustup install stable-x86_64-unknown-linux-gnu |     rustup install stable-x86_64-unknown-linux-gnu | ||||||
|     rustup default stable |     rustup default stable | ||||||
|     rustup target add x86_64-unknown-linux-musl |     rustup target add x86_64-unknown-linux-musl | ||||||
|  |     echo "net.git-fetch-with-cli = true" >> /root/.cargo/config.toml | ||||||
|  | 
 | ||||||
|     mkdir -p /root/.ssh |     mkdir -p /root/.ssh | ||||||
| 
 | 
 | ||||||
|     echo |     echo | ||||||
|     #echo "docker cp ~/.ssh/config packager:/root/.ssh/config" |  | ||||||
|     echo "docker cp deploy_ed25519 packager:/root/.ssh/id_ed25519" |     echo "docker cp deploy_ed25519 packager:/root/.ssh/id_ed25519" | ||||||
|     echo |     echo | ||||||
|     echo "Run above commands in another terminal" |     echo "Run above commands in another terminal" | ||||||
|  | |||||||
| @ -31,27 +31,7 @@ function build_mint_sol_tool() { | |||||||
|     cd .. |     cd .. | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function build_challenge_image() { | source "${script_dir}/build-container.sh" | ||||||
|     echo "Building the hacker-challenge docker image" |  | ||||||
| 
 |  | ||||||
|     if ! command -v docker 2>&1 >/dev/null |  | ||||||
|     then |  | ||||||
|         echo "docker not found, please install docker" |  | ||||||
|         exit 1 |  | ||||||
|     fi |  | ||||||
| 
 |  | ||||||
|     if [ ! -e challenge_instance/challenge.tar.gz ]; then |  | ||||||
|       echo "Please build the challenge first, see README.md" |  | ||||||
|       exit 1 |  | ||||||
|     fi |  | ||||||
| 
 |  | ||||||
|     cd docker |  | ||||||
|     cp ../challenge_instance/challenge.tar.gz challenge.tar.gz |  | ||||||
|     docker build -f challenge.Dockerfile -t hacker-challenge:latest . |  | ||||||
|     cd .. |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| build_challenge_image |  | ||||||
| build_mint_sol_tool | build_mint_sol_tool | ||||||
| 
 | 
 | ||||||
| # Cleanup old containers and run the network root | # Cleanup old containers and run the network root | ||||||
| @ -80,6 +60,7 @@ for p in {31311..31320}; do | |||||||
|     docker run --device /dev/sgx/enclave \ |     docker run --device /dev/sgx/enclave \ | ||||||
|                --device /dev/sgx/provision \ |                --device /dev/sgx/provision \ | ||||||
|                --env INIT_NODES="172.17.0.2 172.17.0.3 172.17.0.4" \ |                --env INIT_NODES="172.17.0.2 172.17.0.3 172.17.0.4" \ | ||||||
|  |                -v "/tmp/hacker-challenge${p}:/challenge/main" \ | ||||||
|                --name "hacker-challenge${p}" -p "${p}:31372" \ |                --name "hacker-challenge${p}" -p "${p}:31372" \ | ||||||
|                -d hacker-challenge:latest |                -d hacker-challenge:latest | ||||||
| done | done | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ use tokio::{ | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| const INIT_NODES: &str = "/host/detee_challenge_nodes"; | const INIT_NODES: &str = "/host/detee_challenge_nodes"; | ||||||
| const DISK_PERSISTENCE: &str = "TRY_TO_HACK_THIS"; | const DISK_PERSISTENCE: &str = "/host/main/TRY_TO_HACK_THIS"; | ||||||
| const MAINTAINED_CONNECTIONS: usize = 3; | const MAINTAINED_CONNECTIONS: usize = 3; | ||||||
| 
 | 
 | ||||||
| pub async fn localhost_cron(ds: Arc<Store>, tx: Sender<NodeUpdate>) { | pub async fn localhost_cron(ds: Arc<Store>, tx: Sender<NodeUpdate>) { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user