如何构建支持多种语言(c,c ++,rust,java,go,python,javascript,nodejs等)的轻量



我是docker的新手 - 我希望构建一个支持多种语言的docker镜像。

我打算做的是以 alpine 为基础,为 c++、c、rust 等安装所有运行时库......我不确定正确的方法是什么。我已经搜索了 docker 集线器,但没有找到。

正如@David所提到的,不建议在 Docker 中使用这种做法,即使您使用 alpine,它也永远不会创建轻量级映像。

如果你访问PHP,nodejs和golang的官方docker中心,你会感到惊讶。

  • 菲律宾比索大约 350MB(阿尔卑斯山(

  • 戈朗 约360MB(阿尔卑斯山(

  • Nodejs 大约80MB(Alpine(

例如,保留您在问题中提到的其余部分,由于操作系统高山大小仍然在800MB以上,每个减去5MB,最终通过添加其余部分而变得越来越大。

或者,你可以多阶段镜像,但同样你必须管理条件语句并将其放在Dockerfile中,以处理像nodejs中的npm install这样的命令,并在PHP和bla bla中执行composer install

您可能会构建这样的映像,但它必须像一团糟一样管理。

ARG BASE_IMAGE="go"
FROM golang:alpine as go
FROM node:alpine as node
FROM php:7.0-apache as php
FROM nginx:alpine as nginx
FROM ${BASE_IMAGE}
ENV BASE_IMAGE=$BASE_IMAGE

将每个容器限制为一个进程是一个很好的经验法则

如果容器的经验法则每个容器都有一个进程,那么我认为它应该只为该进程提供一个环境。

dockerfile_best实践

最新更新