Dockerfile

IDEA Configurations
image

Dockerfile

FROM:指定基础镜像

WORKDIR:指定工作目录,不存在则自动创建

COPY:将源路径的文件复制到镜像目标路径,类似的有ADD命令

ENV:用来设置编译阶段需要的环境变量

RUN:执行命令行

EXPOSE:声明运行时容器提供服务端口

这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处:1、帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;2、运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。

ENTRYPOINT:一旦从镜像中创建容器,Entrypoint就会在容器内运行该命令。

在Dockerfile中只能有一条Entrypoint指令。如果使用了多个Entrypoint指令,则只执行最后一条。

举例:

FROM alpine:3.12 AS builder

ADD go1.19.1.linux-amd64.tar.gz /usr/local/
RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2 && \
    ln -s /usr/local/go/bin/go /usr/bin/go && ln -s /usr/local/go/bin/gofmt /usr/bin/gofmt

ENV GO111MODULE=on\
    GOPROXY="https://goproxy.io"

RUN mkdir /app
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN GOOS=linux CGO_ENABLED=0 go build -o demo

FROM scratch as demo
COPY ./config/application.yml /config/
COPY --from=builder /app /

EXPOSE 8888
ENTRYPOINT ["./demo"]

如Java

FROM openjdk:8u292-slim-buster
ADD ./target/demo-1.0-SNAPSHOT.jar /demo.jar
EXPOSE 8999
ENTRYPOINT ["java","-jar","/demo.jar"]
posted @ 2022-11-29 01:05  Leejk  阅读(19)  评论(0编辑  收藏  举报