mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-30 00:23:24 +00:00
Use docker as dev environment
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
bf961756b9
commit
9137ef434f
72
tools/docker/Dockerfile.ubuntu22.04
Normal file
72
tools/docker/Dockerfile.ubuntu22.04
Normal file
@ -0,0 +1,72 @@
|
||||
FROM ubuntu:22.04
|
||||
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt update && apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cpio \
|
||||
cpuid \
|
||||
curl \
|
||||
file \
|
||||
g++ \
|
||||
gdb \
|
||||
git-core \
|
||||
gnupg \
|
||||
grub-common \
|
||||
libssl-dev \
|
||||
net-tools \
|
||||
openssh-server \
|
||||
pkg-config \
|
||||
python-is-python3 \
|
||||
python3-pip \
|
||||
qemu-system-x86 \
|
||||
strace \
|
||||
sudo \
|
||||
unzip \
|
||||
vim \
|
||||
wget \
|
||||
xorriso \
|
||||
zip
|
||||
|
||||
# Install bazel, , which is required by the system call test suite from Gvisor project
|
||||
RUN curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg \
|
||||
&& mv bazel.gpg /etc/apt/trusted.gpg.d/ \
|
||||
&& echo 'deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8' | tee /etc/apt/sources.list.d/bazel.list \
|
||||
&& apt update \
|
||||
&& apt install bazel=5.4.0 -y
|
||||
|
||||
# Clean apt cache
|
||||
RUN apt clean \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install Rust
|
||||
ENV PATH="/root/.cargo/bin:${PATH}"
|
||||
ENV JINUX_RUST_VERSION="nightly-2023-02-05"
|
||||
RUN curl https://sh.rustup.rs -sSf | \
|
||||
sh -s -- --default-toolchain ${JINUX_RUST_VERSION} -y \
|
||||
&& rm -rf /root/.cargo/registry && rm -rf /root/.cargo/git \
|
||||
&& cargo -V \
|
||||
&& rustup component add rust-src rustc-dev llvm-tools-preview
|
||||
|
||||
# Install mdbook
|
||||
RUN cargo install mdbook
|
||||
|
||||
# Add the path of jinux tools
|
||||
ENV PATH="/root/jinux/target/bin:${PATH}"
|
||||
|
||||
# Build busybox
|
||||
RUN curl --output busybox.tar.bz2 https://busybox.net/downloads/busybox-1.35.0.tar.bz2 \
|
||||
&& mkdir /root/busybox \
|
||||
&& tar xf busybox.tar.bz2 --strip-components=1 -C /root/busybox
|
||||
WORKDIR /root/busybox
|
||||
RUN make defconfig \
|
||||
&& sed -i "s/# CONFIG_STATIC is not set/CONFIG_STATIC=y/g" .config \
|
||||
&& sed -i "s/# CONFIG_FEATURE_SH_STANDALONE is not set/CONFIG_FEATURE_SH_STANDALONE=y/g" .config \
|
||||
&& make -j \
|
||||
&& cp /root/busybox/busybox /bin/busybox
|
||||
|
||||
VOLUME [ "/root/jinux" ]
|
||||
|
||||
WORKDIR /root/jinux
|
14
tools/docker/build_image.sh
Executable file
14
tools/docker/build_image.sh
Executable file
@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
CARGO_TOML_PATH=${SCRIPT_DIR}/../../Cargo.toml
|
||||
VERSION=$( grep -m1 -o '[0-9]\+\.[0-9]\+\.[0-9]\+' ${CARGO_TOML_PATH} | sed 's/[^0-9\.]//g' )
|
||||
IMAGE_NAME=jinuxdev/jinux:${VERSION}
|
||||
DOCKER_FILE=${SCRIPT_DIR}/Dockerfile.ubuntu22.04
|
||||
ARCH=linux/amd64
|
||||
|
||||
# Build docker
|
||||
cd ${SCRIPT_DIR}
|
||||
docker buildx build -f ${DOCKER_FILE} --platform ${ARCH} -t ${IMAGE_NAME} .
|
11
tools/docker/run_dev_container.sh
Executable file
11
tools/docker/run_dev_container.sh
Executable file
@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
JINUX_SRC_DIR=${SCRIPT_DIR}/../..
|
||||
CARGO_TOML_PATH=${SCRIPT_DIR}/../../Cargo.toml
|
||||
VERSION=$( grep -m1 -o '[0-9]\+\.[0-9]\+\.[0-9]\+' ${CARGO_TOML_PATH} | sed 's/[^0-9\.]//g' )
|
||||
IMAGE_NAME=jinuxdev/jinux:${VERSION}
|
||||
|
||||
docker run -it --privileged --network=host --device=/dev/kvm -v ${JINUX_SRC_DIR}:/root/jinux ${IMAGE_NAME}
|
Reference in New Issue
Block a user