From f30d2af65202971a187f3957ff93a888caf26efc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Fri, 20 May 2022 14:52:19 +0800 Subject: [PATCH] add dockerfile --- .github/workflows/docker.yml | 65 ++++++++++++++++++++++++++++++++++++ Dockerfile | 47 ++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 .github/workflows/docker.yml create mode 100644 Dockerfile diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..fa2ab42 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,65 @@ +name: Build And Push Docker Image + +on: + push: + # Sequence of patterns matched against refs/tags + tags: + - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 + +jobs: + build: + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + steps: + - uses: actions/checkout@v2 + - name: Set time zone + uses: szenius/set-timezone@v1.0 + with: + timezoneLinux: "Asia/Shanghai" + timezoneMacos: "Asia/Shanghai" + timezoneWindows: "China Standard Time" + + # # 如果有 dockerhub 账户,可以在github的secrets中配置下面两个,然后取消下面注释的这几行,并在meta步骤的images增加一行 ${{ github.repository }} + # - name: Login to DockerHub + # uses: docker/login-action@v1 + # with: + # username: ${{ secrets.DOCKERHUB_USERNAME }} + # password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Login to GHCR + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v3 + with: + images: | + ghcr.io/${{ github.repository }} + # generate Docker tags based on the following events/attributes + # nightly, master, pr-2, 1.2.3, 1.2, 1 + tags: | + type=schedule,pattern=nightly + type=edge + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Build and push + id: docker_build + uses: docker/build-push-action@v2 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..076d219 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,47 @@ +FROM alpine:latest AS builder + +RUN apk update && apk add gcc g++ cmake automake autoconf libtool make linux-headers git + +WORKDIR /build + +RUN git clone --depth=1 https://github.com/fumiama/simple-protobuf.git \ + && cd simple-protobuf \ + && mkdir build \ + && cd build \ + && cmake .. \ + && make install + +RUN rm -rf * + +RUN git clone --depth=1 https://github.com/fumiama/simple-http-server.git \ + && cd simple-http-server \ + && mkdir build \ + && cd build \ + && cmake .. \ + && make install + +RUN rm -rf * + +COPY ./*.c . +COPY ./*.h . +COPY ./CMakeLists.txt . + +RUN mkdir build \ + && cd build \ + && cmake .. \ + && make install + +FROM alpine:latest + +COPY --from=builder /usr/local/bin/simple-http-server /usr/bin/simple-http-server +COPY --from=builder /usr/local/bin/cmoe /data/cmoe +COPY --from=builder /usr/local/lib/libspb.so /usr/local/lib/libspb.so +RUN chmod +x /usr/bin/simple-http-server +RUN chmod +x /data/cmoe + +WORKDIR /data +COPY ./assets/favicon.ico . +COPY ./assets/index.html . +COPY ./assets/style.css . + +ENTRYPOINT [ "/usr/bin/simple-http-server" ] \ No newline at end of file