зеркало из https://github.com/Azure/iotedgedev.git
76 строки
3.2 KiB
Docker
76 строки
3.2 KiB
Docker
# Dependencies versions
|
|
ARG PYTHON_VERSION="3.9"
|
|
|
|
FROM mcr.microsoft.com/vscode/devcontainers/python:0-${PYTHON_VERSION}
|
|
|
|
# Dependencies versions
|
|
ARG AZURE_CLI_VERSION="2.34.1-1~bullseye"
|
|
ARG NODE_VERSION="17.x"
|
|
ARG DOTNET_VERSION="5.0"
|
|
ARG JDK_VERSION="2:1.11-72"
|
|
ARG MAVEN_VERSION="3.6.3-5"
|
|
|
|
# Bring in utility scripts
|
|
COPY .devcontainer/library-scripts/*.sh /tmp/library-scripts/
|
|
|
|
RUN \
|
|
# Install some basics
|
|
apt-get update && \
|
|
apt-get upgrade -y && \
|
|
apt-get install -y --no-install-recommends build-essential apt-utils && \
|
|
apt-get install -y libffi-dev libssl-dev vim sudo && \
|
|
apt-get upgrade -y
|
|
|
|
RUN \
|
|
# Upgrade to latest pip
|
|
python -m pip install --upgrade pip && \
|
|
# Install node, npm
|
|
curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION} | bash - && \
|
|
apt-get install -y nodejs && \
|
|
npm install npm@latest -g && \
|
|
# Install azure-cli
|
|
apt-get install -y ca-certificates curl apt-transport-https lsb-release gnupg && \
|
|
curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/microsoft.gpg > /dev/null && \
|
|
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/azure-cli.list && \
|
|
apt-get update && apt-get install -y azure-cli=${AZURE_CLI_VERSION} && \
|
|
az extension add --name azure-iot --system && \
|
|
az extension update --name azure-iot && \
|
|
# Use Docker script from script library to set things up - enable non-root docker, user vscode, using moby
|
|
/bin/bash /tmp/library-scripts/docker-in-docker-debian.sh "true" "vscode" "true" \
|
|
# Install Yoeman, node.js modules
|
|
npm install -g yo && \
|
|
npm i -g yo generator-azure-iot-edge-module && \
|
|
# Install dotnet SDK
|
|
cd ~ && \
|
|
wget https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \
|
|
dpkg -i packages-microsoft-prod.deb && \
|
|
rm packages-microsoft-prod.deb && \
|
|
apt-get update && apt-get install -y apt-transport-https && \
|
|
apt-get update && apt-get install -y dotnet-sdk-${DOTNET_VERSION} && \
|
|
# Install Java JDK, Maven
|
|
apt-get install -y default-jdk=${JDK_VERSION} && \
|
|
apt-get install -y maven=${MAVEN_VERSION} && \
|
|
# Install bash completion
|
|
apt-get update && apt-get -y install bash-completion && \
|
|
# Clean up
|
|
apt-get autoremove -y && \
|
|
apt-get clean -y && \
|
|
rm -rf /tmp/* && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# customize vscode environmnet
|
|
USER vscode
|
|
RUN \
|
|
git clone https://github.com/magicmonty/bash-git-prompt.git $HOME/.bash-git-prompt --depth=1 && \
|
|
echo "\n# setup GIT prompt and completion\nif [ -f \"$HOME/.bash-git-prompt/gitprompt.sh\" ]; then\n GIT_PROMPT_ONLY_IN_REPO=1 && source $HOME/.bash-git-prompt/gitprompt.sh;\nfi" >> $HOME/.bashrc && \
|
|
echo "source /usr/share/bash-completion/bash_completion" >> $HOME/.bashrc && \
|
|
echo "\n# add local python programs to PATH\nexport PATH=$PATH:$HOME/.local/bin\n" >> $HOME/.bashrc && \
|
|
# enable some useful aliases
|
|
sed -i -e "s/#alias/alias/" $HOME/.bashrc && \
|
|
# add the cookiecutter
|
|
pip install cookiecutter
|
|
|
|
# launch docker-ce
|
|
ENTRYPOINT [ "/usr/local/share/docker-init.sh" ]
|
|
CMD [ "sleep", "infinity" ]
|