Рубрики
Uncategorized

Мой окончательный Dockerfile Dockerfile

Среда развития Dockerfile, который я выращивал и использовал в своих проектах. Tagged с Docker, Development, DevOps, Vscode.

Мой окончательный 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»