多个项目共用一个dockerfile

发布于 2022-09-11 19:42:41 字数 713 浏览 22 评论 0

公司的大项目底下分了很多小项目,都是用dockerfile来构建镜像。每个小项目的dockerfile都是类似的。
其中一个例子如下:

FROM golang:1.11.1 AS build

WORKDIR /go/src/system

COPY . .

RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -tags=jsoniter -o main src/main.go

FROM alpine:3.8

ENV TZ=Asia/Shanghai LANG=C.UTF-8 TERM=xterm

RUN apk --update add ca-certificates tzdata && \
    cp /usr/share/zoneinfo/$TZ /etc/localtime && \
    echo $TZ > /etc/timezone

WORKDIR /go/src/system

RUN touch /etc/config.yaml && mkdir -p /t/logs/

COPY --from=build /go/src/system/main .

VOLUME ["/t/logs"]

ENTRYPOINT ["./main"]

所有项目的dockerfile除了system会被替换成对应的工程目录名字,其他都一样。如何让所有项目共享一个dockerfile呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

各自安好 2022-09-18 19:42:41

试试ARG

柠檬 2022-09-18 19:42:41

用同一个dockerfile,build几个镜像各自用不就好了吗

拥有 2022-09-18 19:42:41

可以查查go有没有类似maven docker-maven-plugind的插件,java中可以在每个子项目pom中引入

<build>
    <plugins>
         <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>
                <imageName>mavendemo</imageName>
                <dockerDirectory>${basedir}/docker</dockerDirectory> <!-- 指定 Dockerfile 路径-->
                <!-- 这里是复制 jar 包到 docker 容器指定目录配置,也可以写到 Docokerfile 中 -->
                <resources>
                    <resource>
                        <targetPath>/ROOT</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>   
    </plugins>
</build>

通过 <dockerDirectory>${basedir}/docker</dockerDirectory> <!-- 指定 Dockerfile 路径-->

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文