我有一个dockerized Go应用程序映像上传到Docker Hub。
我想在裸机VPS上的完整堆栈容器中运行此应用程序。我该怎么做?该应用程序使用MySQL和一个.env
文件
我是在本地还是在VPS本身上构建容器?如果在本地,如何将其添加到VPS?
我是否将docker compose文件的副本上传到VPS并在VPS上安装docker之后在其中运行?
在docker compose文件中,我各种各样地看到人们使用build: .
或image: some_image
。前者将指示该容器是根据本地源代码在本地构建的。后者表明映像是在我的开发机器上本地构建的,并由VPS从docker hub提取?正确吗?
某些多阶段Docker文件在第一个FROM语句中以alpine:latest
之类的Linux映像开头,但大多数以go:alpine
或go:latest
之类的FROM应用程序映像开头。有什么区别?我为什么要使用一种形式?
这是我的Dockerfile
。 II还没有docker compose文件。
FROM golang:latest as builder
LABEL maintainer="Me <me@gmail.com>"
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /srv/
COPY --from=builder /app/main .
EXPOSE 8002
CMD ["./main"]