Мой окончательный Dockerfile Dockerfile
Если вы не слышали о Функция удаленной разработки VSCODE пока что… Честно говоря, я не знаю, на какой планете вы живете …
Или, может быть .. я инопланетянин ❔ 😕
Это функция, которая позволяет вам удаленно развиваться с вашей рабочей станции. Это означает, что даже если вы пишете код на своей рабочей станции, вся ваша среда находится в другом месте.
Вы можете удаленно развить на другой станции, используя Ssh или WSL Анкет Но моя любимая особенность — использовать Docker Анкет Вы можете создать отдельную изолированную среду песочницы для всей вашей разработки или конкретного проекта, внутри Контейнер Docker Анкет
Достаточно с вступлением. 😁 Я культивировал Dockerfile Я использую на протяжении всех своих проектов. Это довольно простой Dockerfile Это устанавливает мои наиболее часто используемые двоичные файлы и инструменты.
Ключ здесь-это слои, они были предварительно разработаны таким образом, чтобы они могли быть разместимыми для всех моих контейнеров и требуют небольшой адаптации при изменении определенных частей, в основном: в основном:
Переменные среды идут на самый низкий уровень, поскольку они редко изменяются.
Установки двоичных файлов идут в следующих слоях отдельно друг от друга, поэтому при изменении они потребуют только уровня над ними, чтобы быть восстановленными.
Модули, требования, зависимости, пакеты, библиотеки и т. Д. Идите в верхнем уровне, поскольку они чаще модифицируются.
Достаточно с Chit-Chat, вот мой Ultimate Dockerfile среды развития :
Вы можете проверить фактическое Dockerfile в моем GitHub Gist 😎
# Base image is python's image FROM python:3.8.5 # Set shell with pipeline fail return SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Set environment variables ENV SHELL=/bin/bash \ DOTNET_CLI_TELEMETRY_OPTOUT=true \ JAVA_HOME=/opt/java \ MAVEN_HOME=/opt/maven \ PATH_TO_FX=/usr/share/java/ \ PATH=$PATH:/opt/java/bin:/opt/maven/bin:/opt/gopath/bin:/opt/go/bin:/root/.dotnet/tools # Install linux packages (including dotnet and javafx) RUN curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg \ && mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/ \ && curl -sL https://packages.microsoft.com/config/debian/10/prod.list \ -o /etc/apt/sources.list.d/microsoft-prod.list \ && apt-get update \ && apt-get install -y --no-install-recommends apt-transport-https \ && apt-get install -y --no-install-recommends dotnet-sdk-3.1 \ && apt-get install -y --no-install-recommends git-lfs \ && apt-get install -y --no-install-recommends nano \ && apt-get install -y --no-install-recommends openjfx \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Install java WORKDIR /opt/java RUN curl -sOL https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.7%2B10_openj9-0.20.0/OpenJDK11U-jdk_x64_linux_openj9_11.0.7_10_openj9-0.20.0.tar.gz \ && tar -xf OpenJDK11U-jdk_x64_linux_openj9_11.0.7_10_openj9-0.20.0.tar.gz \ && rm OpenJDK11U-jdk_x64_linux_openj9_11.0.7_10_openj9-0.20.0.tar.gz \ && mv jdk-11.0.7+10/* . \ && rm -r jdk-11.0.7+10 # Install maven WORKDIR /opt/maven RUN curl -sOL https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz \ && tar -xf apache-maven-3.6.3-bin.tar.gz \ && rm apache-maven-3.6.3-bin.tar.gz \ && mv apache-maven-3.6.3/* . \ && rm -r apache-maven-3.6.3 # Install nodejs (includes npm) RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - \ && apt-get install -y --no-install-recommends nodejs \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Install golang WORKDIR /opt/go RUN curl -sOL https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz \ && tar -C /opt -xf go1.14.4.linux-amd64.tar.gz \ && rm go1.14.4.linux-amd64.tar.gz \ && bin/go env -w GOPATH=/opt/gopath GO111MODULE=on # Install modules, requirements, dependencies, packages, libraries, etc. RUN \ # Install node modules npm install -g \ commitizen@4.1.2 \ cz-conventional-changelog@3.2.0 \ @commitlint/cli@9.1.1 \ @commitlint/config-conventional@9.1.1 \ dockerfilelint@1.8.0 \ jsonlint@1.6.3 \ markdownlint-cli@0.23.2 \ semantic-release@17.1.1 \ yarn@1.22.4 \ # Install go modules && go get -u \ github.com/bufbuild/buf/cmd/buf@v0.20.5 \ github.com/bufbuild/buf/cmd/protoc-gen-buf-check-breaking@v0.20.5 \ github.com/bufbuild/buf/cmd/protoc-gen-buf-check-lint@v0.20.5 \ github.com/client9/misspell/cmd/misspell@v0.3.4 \ github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@v1.3.2 \ github.com/yoheimuta/protolint/cmd/protolint@v0.26.0 \ # Install python dependencies && pip install \ docutils==0.16 \ pre-commit==2.6.0 \ robotframework==3.2.1 \ yamllint==1.24.2 \ # Install dotnet tools && dotnet tool install -g dotnet-format --version 4.1.131201 \ && dotnet tool install -g dotnet-reportgenerator-globaltool --version 4.6.4
Надеюсь, вы найдете это полезным.
👋 Увидимся в следующем посте 👋
Оригинал: «https://dev.to/tomerfi/my-ultimate-development-dockerfile-4hg1»