summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfkwong <huangfuqiang@transai.cn>2023-01-05 13:19:42 +0800
committerfkwong <huangfuqiang@transai.cn>2023-01-05 13:19:42 +0800
commit50f5bfc34b57ede4d4849d98761f2a67a3584366 (patch)
treecbf0cd0bbb186c3e3690806ff2238c98d4c87080
parent8bdbed3331ac3cdeaea6a52ebc8144caf24e34db (diff)
Add ubuntu Dockerfile
-rw-r--r--Makefile5
-rw-r--r--docker-files/ubuntu.Dockerfile143
2 files changed, 148 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 23c358bd..4908f51c 100644
--- a/Makefile
+++ b/Makefile
@@ -137,6 +137,11 @@ docker-alpine: ## Generate local docker images (Alpine)
docker build --target minimal -f ./docker-files/alpine.Dockerfile -t glances:local-alpine-minimal .
docker build --target dev -f ./docker-files/alpine.Dockerfile -t glances:local-alpine-dev .
+docker-ubuntu: ## Generate local docker images (Ubuntu)
+ docker build --target full -f ./docker-files/ubuntu.Dockerfile -t glances:local-ubuntu-full .
+ docker build --target minimal -f ./docker-files/ubuntu.Dockerfile -t glances:local-ubuntu-minimal .
+ docker build --target dev -f ./docker-files/ubuntu.Dockerfile -t glances:local-ubuntu-dev .
+
# ===================================================================
# Run
# ===================================================================
diff --git a/docker-files/ubuntu.Dockerfile b/docker-files/ubuntu.Dockerfile
new file mode 100644
index 00000000..31a5f186
--- /dev/null
+++ b/docker-files/ubuntu.Dockerfile
@@ -0,0 +1,143 @@
+#
+# Glances Dockerfile (based on Ubuntu)
+#
+# https://github.com/nicolargo/glances
+#
+
+# WARNING: the versions should be set.
+# Ex: Python 3.10 for Ubuntu 22.04
+# Note: ENV is for future running containers. ARG for building your Docker image.
+
+ARG IMAGE_VERSION=11.8.0-base-ubuntu22.04
+ARG PYTHON_VERSION=3.10
+ARG PIP_MIRROR=https://mirrors.aliyun.com/pypi/simple/
+FROM nvidia/cuda:${IMAGE_VERSION} as build
+
+RUN apt-get update \
+ && apt-get install -y --no-install-recommends \
+ python3 \
+ python3-dev \
+ python3-pip \
+ python3-wheel \
+ musl-dev \
+ build-essential \
+ libzmq5 \
+ curl \
+ lm-sensors \
+ wireless-tools \
+ net-tools \
+ && apt-get clean \
+ && rm -rf /var/lib/apt/lists/*
+
+##############################################################################
+# Install the dependencies beforehand to make them cacheable
+
+FROM build as buildRequirements
+ARG PYTHON_VERSION
+ARG PIP_MIRROR
+
+ARG PIP_MIRROR=https://mirrors.aliyun.com/pypi/simple/
+
+COPY requirements.txt .
+RUN python${PYTHON_VERSION} -m pip install --no-cache-dir --user -r requirements.txt -i ${PIP_MIRROR}
+
+# Minimal means no webui, but it break what is done previously (see #2155)
+# So install the webui requirements...
+COPY webui-requirements.txt .
+RUN python${PYTHON_VERSION} -m pip install --no-cache-dir --user -r webui-requirements.txt -i ${PIP_MIRROR}
+
+# As minimal image we want to monitor others docker containers
+RUN python${PYTHON_VERSION} -m pip install --no-cache-dir --user docker -i ${PIP_MIRROR}
+
+# Force install otherwise it could be cached without rerun
+ARG CHANGING_ARG
+RUN python${PYTHON_VERSION} -m pip install --no-cache-dir --user glances -i ${PIP_MIRROR}
+
+##############################################################################
+
+FROM build as buildOptionalRequirements
+ARG PYTHON_VERSION
+ARG PIP_MIRROR
+
+COPY requirements.txt .
+COPY optional-requirements.txt .
+RUN CASS_DRIVER_NO_CYTHON=1 pip3 install --no-cache-dir --user -r optional-requirements.txt -i ${PIP_MIRROR}
+
+##############################################################################
+# full image
+##############################################################################
+
+FROM build as full
+ARG PYTHON_VERSION
+
+COPY --from=buildRequirements /root/.local/bin /root/.local/bin/
+COPY --from=buildRequirements /root/.local/lib/python${PYTHON_VERSION}/site-packages /root/.local/lib/python${PYTHON_VERSION}/site-packages/
+COPY --from=buildOptionalRequirements /root/.local/lib/python${PYTHON_VERSION}/site-packages /root/.local/lib/python${PYTHON_VERSION}/site-packages/
+COPY ./docker-compose/glances.conf /etc/glances.conf
+
+# EXPOSE PORT (XMLRPC / WebUI)
+EXPOSE 61209 61208
+
+# Define default command.
+WORKDIR /glances
+CMD python3 -m glances -C /etc/glances.conf $GLANCES_OPT
+
+##############################################################################
+# minimal image
+##############################################################################
+
+# Create running images without any building dependency
+FROM nvidia/cuda:${IMAGE_VERSION} as minimal
+ARG PYTHON_VERSION
+
+ARG DEBIAN_FRONTEND=noninteractive
+ENV TZ=Asia/Shanghai
+
+RUN apt-get update \
+ && apt-get install -y --no-install-recommends \
+ python3 \
+ python3-packaging \
+ python3-dateutil \
+ curl \
+ lm-sensors \
+ wireless-tools \
+ net-tools \
+ && apt-get clean \
+ && rm -rf /var/lib/apt/lists/*
+
+COPY --from=buildRequirements /root/.local/bin /root/.local/bin/
+COPY --from=buildRequirements /root/.local/lib/python${PYTHON_VERSION}/site-packages /root/.local/lib/python${PYTHON_VERSION}/site-packages/
+COPY ./docker-compose/glances.conf /etc/glances.conf
+
+# EXPOSE PORT (XMLRPC / WebUI)
+EXPOSE 61209 61208
+
+# Define default command.
+WORKDIR /glances
+CMD python3 -m glances -C /etc/glances.conf $GLANCES_OPT
+
+##############################################################################
+# dev image
+##############################################################################
+
+FROM full as dev
+ARG PYTHON_VERSION
+
+COPY --from=buildRequirements /root/.local/bin /root/.local/bin/
+COPY --from=buildRequirements /root/.local/lib/python${PYTHON_VERSION}/site-packages /root/.local/lib/python${PYTHON_VERSION}/site-packages/
+COPY --from=buildOptionalRequirements /root/.local/lib/python${PYTHON_VERSION}/site-packages /root/.local/lib/python${PYTHON_VERSION}/site-packages/
+COPY ./docker-compose/glances.conf /etc/glances.conf
+
+# Copy the current Glances source code
+COPY . /glances
+
+# EXPOSE PORT (XMLRPC / WebUI)
+EXPOSE 61209 61208
+
+# Forward access and error logs to Docker's log collector
+RUN ln -sf /dev/stdout /tmp/glances-root.log \
+ && ln -sf /dev/stderr /var/log/error.log
+
+# Define default command.
+WORKDIR /glances
+CMD python3 -m glances -C /etc/glances.conf $GLANCES_OPT