前言
在某一天,drone就跳出來了 『Your license limit is exceeded。』
當下真是嚇死我了,當天又是維護日,
一堆程式要上版,自動佈署掛掉就完了,要通通手動上。
還好,沒事,只是跳個通知在那邊,查了一些文件,
都沒說到期了會怎樣,就這樣過了兩個月,
也都沒事發生,本來想繼續撐下去的,
但有其他東西要用,就順便一起動了。
正文
官方文件有寫到關於權限的部分,
- Your license limit is exceeded ,這個是因為你build 超過了5000次,然後你又是直接抓官方版本的image才會出現這個通知。(OS:一開始測試當然直接抓官方的image來用阿…)
- 基本上只要是年收入沒到 1 million(美金)的公司,都能免費使用,但要自己打包image。
其他細項,可自行參考官方網站
Build image
我們可以先從官方的github看看,他們是怎麼編譯的。
- 先執行, scripts/build.sh
- 再根據 docker/Dockerfile.server.linux.amd64 的dockerfile去打包程式。
下面這段,直接存成dockerfile去編譯吧,
版本號自行更改。
補充說明,
docker 在編譯的時候,
每一行指令 (前面有加 RUN 或COPY…的這種算一行),
都算是一個新的image,可以看到sha256的數值都不一樣,
所以用 cd drone 切 路徑的話,要再同一行把要執行的command,
都執行完。
FROM golang AS Builder
ENV DRONE_VERSION v2.9.1
WORKDIR $GOPATH/src
RUN git clone https://github.com/drone/drone --branch ${DRONE_VERSION} --single-branch
RUN cd drone && pwd && go mod download && \
go build -ldflags "-extldflags \"-static\"" -tags="nolimit" github.com/drone/drone/cmd/drone-server
FROM alpine:3.13 AS Certs
RUN apk add -U --no-cache ca-certificates
FROM alpine:3.13
EXPOSE 80 443
VOLUME /data
RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.conf
ENV GODEBUG netdns=go
ENV XDG_CACHE_HOME /data
ENV DRONE_DATABASE_DRIVER sqlite3
ENV DRONE_DATABASE_DATASOURCE /data/database.sqlite
ENV DRONE_RUNNER_OS=linux
ENV DRONE_RUNNER_ARCH=amd64
ENV DRONE_SERVER_PORT=:80
ENV DRONE_SERVER_HOST=localhost
ENV DRONE_DATADOG_ENABLED=true
ENV DRONE_DATADOG_ENDPOINT=https://stats.drone.ci/api/v1/series
COPY --from=Certs /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=Builder go/src/drone/drone-server /bin/drone-server
ENTRYPOINT ["/bin/drone-server"]
本來想用go get 的方式,直接把程式build出來,
但一直卡在go 的版號限制,看了一些文章都說要改裡面的程式。
但這東西寫完,基本上就不會再動了。
只好用git clone把程式先抓下來,再build了。
ref.
0 意見:
張貼留言