我正在使用类似于下面的Dockerfile多级配置。
FROM swift:4.1
WORKDIR /app
COPY . .
RUN swift build --configuration release && mv `swift build -c release --show-bin-path` /build/bin
FROM ubuntu:16.04
RUN apt-get -qq update && apt-get install -y \
libicu55 libxml2 libbsd0 libcurl3 libatomic1 wget && rm -r /var/lib/apt/lists/*
RUN /bin/bash -c "$(wget -qO- https://apt.vapor.sh)"
RUN wget -q https://repo.vapor.codes/apt/keyring.gpg -O- | apt-key add -
RUN apt-get update && apt-get install swift vapor -y
WORKDIR /app
COPY --from=builder /build/bin .
COPY --from=builder /build/lib/* /usr/lib/
EXPOSE 3000
ENTRYPOINT ./Run serve -e prod -b 0.0.0.0 -p 3000
我目前正在使用它在虚拟服务器中部署我的服务,由于其低性能需要永远构建项目。
构建并上传到docker hub中的私有仓库,构建器的映像结果是一种很好的做法,也是可能的,所以我可以从本地计算机上完成它吗?
我可以在虚拟服务器中进行第二步吗?这意味着:
FROM myPrivateImageBuiltLocally as image
WORKDIR /app
COPY . .
FROM ubuntu:16.04
RUN apt-get -qq update && apt-get install -y \
libicu55 libxml2 libbsd0 libcurl3 libatomic1 wget && rm -r /var/lib/apt/lists/*
RUN /bin/bash -c "$(wget -qO- https://apt.vapor.sh)"
RUN wget -q https://repo.vapor.codes/apt/keyring.gpg -O- | apt-key add -
RUN apt-get update && apt-get install swift vapor -y
WORKDIR /app
COPY --from=builder /build/bin .
COPY --from=builder /build/lib/* /usr/lib/
EXPOSE 3000
ENTRYPOINT ./Run serve -e prod -b 0.0.0.0 -p 3000
答案 0 :(得分:1)
是的,你可以做到。您不必在本地构建它。您可以使用dockerhub的自动构建功能。它的工作原理如下。
1)。将代码推送到github / bitbucket 2)。在dockerhub中创建新图像并映射到github repo
每次将新提交推送到github repo时,这将自动构建映像。
您还可以查看所有统计信息,例如构建日志,Succss或失败,下载次数等...
参考:https://docs.docker.com/docker-cloud/builds/automated-build/#configure-automated-build-settings