背景
本文介绍如何在本地快速将 kubernetes/website 项目运行起来。
步骤
- 构建运行镜像
项目里已经包含运行时镜像的 Dockerfile,我们只需执行make docker-image
:
该命令会创建包含 Hugo 及运行 Website 所需的依赖环境的 Docker 镜像$ make docker-image docker build . --tag kubernetes-hugo --build-arg HUGO_VERSION=0.49 Sending build context to Docker daemon 4.096kB Step 1/7 : FROM alpine:latest latest: Pulling from library/alpine e7c96db7181b: Pull complete Digest: sha256:769fddc7cc2f0a1c35abb2f91432e8beecf83916c421420e6a6da9f8975464b6 Status: Downloaded newer image for alpine:latest ---> 055936d39205 Step 2/7 : MAINTAINER Luc Perkins <lperkins@linuxfoundation.org> ---> Running in d59f0a65e898 Removing intermediate container d59f0a65e898 ---> 608b99c5d0f5 Step 3/7 : RUN apk add --no-cache curl git openssh-client rsync build-base libc6-compat ---> Running in 9bfe037b7da5 fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz (1/37) Installing binutils (2.31.1-r2) (2/37) Installing libmagic (5.36-r0) (3/37) Installing file (5.36-r0) (4/37) Installing gmp (6.1.2-r1) (5/37) Installing isl (0.18-r0) (6/37) Installing libgomp (8.3.0-r0) (7/37) Installing libatomic (8.3.0-r0) (8/37) Installing libgcc (8.3.0-r0) (9/37) Installing mpfr3 (3.1.5-r1) (10/37) Installing mpc1 (1.0.3-r1) (11/37) Installing libstdc++ (8.3.0-r0) (12/37) Installing gcc (8.3.0-r0) (13/37) Installing musl-dev (1.1.20-r4) (14/37) Installing libc-dev (0.7.1-r0) (15/37) Installing g++ (8.3.0-r0) (16/37) Installing make (4.2.1-r2) (17/37) Installing fortify-headers (1.0-r0) (18/37) Installing build-base (0.5-r1) (19/37) Installing ca-certificates (20190108-r0) (20/37) Installing nghttp2-libs (1.35.1-r0) (21/37) Installing libssh2 (1.8.2-r0) (22/37) Installing libcurl (7.64.0-r2) (23/37) Installing curl (7.64.0-r2) (24/37) Installing expat (2.2.6-r0) (25/37) Installing pcre2 (10.32-r1) (26/37) Installing git (2.20.1-r0) (27/37) Installing libc6-compat (1.1.20-r4) (28/37) Installing openssh-keygen (7.9_p1-r5) (29/37) Installing ncurses-terminfo-base (6.1_p20190105-r0) (30/37) Installing ncurses-terminfo (6.1_p20190105-r0) (31/37) Installing ncurses-libs (6.1_p20190105-r0) (32/37) Installing libedit (20181209.3.1-r0) (33/37) Installing openssh-client (7.9_p1-r5) (34/37) Installing libattr (2.4.47-r7) (35/37) Installing libacl (2.2.52-r5) (36/37) Installing popt (1.16-r7) (37/37) Installing rsync (3.1.3-r1) Executing busybox-1.29.3-r10.trigger Executing ca-certificates-20190108-r0.trigger OK: 190 MiB in 51 packages Removing intermediate container 9bfe037b7da5 ---> 097747e17d3b Step 4/7 : ARG HUGO_VERSION ---> Running in 52f40c4a1888 Removing intermediate container 52f40c4a1888 ---> b280f2ae0beb Step 5/7 : RUN mkdir -p /usr/local/src && cd /usr/local/src && curl -L https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_linux-64bit.tar.gz | tar -xz && mv hugo /usr/local/bin/hugo && addgroup -Sg 1000 hugo && adduser -Sg hugo -u 1000 -h /src hugo ---> Running in c108bc617b96 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 618 0 618 0 0 637 0 --:--:-- --:--:-- --:--:-- 636 100 7471k 100 7471k 0 0 26967 0 0:04:43 0:04:43 --:--:-- 35297 Removing intermediate container c108bc617b96 ---> 362d41624cce Step 6/7 : WORKDIR /src ---> Running in ccd6267d276e Removing intermediate container ccd6267d276e ---> 2a23462cc638 Step 7/7 : EXPOSE 1313 ---> Running in 1335c41f8096 Removing intermediate container 1335c41f8096 ---> e7b443574e01 Successfully built e7b443574e01
- 运行 website
基于上述运行时镜像,我们只需执行make docker-serve
即可运行起 website
浏览器访问:http://127.0.0.1:1313$ make docker-serve docker run --rm --interactive --tty --volume /home/work/src/k8s.io/website:/src -p 1313:1313 kubernetes-hugo hugo server --watch --bind 0.0.0.0 | EN | ZH | KO +------------------+------+-----+-----+ Pages | 1687 | 235 | 44 Paginator pages | 251 | 4 | 0 Non-page files | 507 | 367 | 299 Static files | 815 | 815 | 815 Processed images | 0 | 0 | 0 Aliases | 3 | 2 | 1 Sitemaps | 2 | 1 | 1 Cleaned | 0 | 0 | 0 Total in 12684 ms Watching for changes in /src/{content,data,i18n,layouts,static} Watching for config changes in /src/config.toml Serving pages from memory Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender Web Server is available at http://localhost:1313/ (bind address 0.0.0.0) Press Ctrl+C to stop
参考链接:https://github.com/kubernetes/website/blob/master/README.md
错误记录
-
运行
make docker-serve
出错,可能是因为需要梯子,代码会访问 api.twitter.comdocker run --rm --interactive --tty --volume /home/work/src/k8s.io/website:/src -p 1313:1313 kubernetes-hugo hugo server --watch --bind 0.0.0.0 Building sites … ERROR 2019/06/13 07:41:11 Failed to get JSON resource https://api.twitter.com/1/statuses/oembed.json?id=992409364467200000&dnt=false: Get https://api.twitter.com/1/statuses/oembed.json?id=992409364467200000&dnt=false: dial tcp 31.13.64.49:443: connect: connection refused ERROR 2019/06/13 07:41:11 Failed to get JSON resource https://api.twitter.com/1/statuses/oembed.json?id=1044345018490662912&dnt=false: Get https://api.twitter.com/1/statuses/oembed.json?id=1044345018490662912&dnt=false: dial tcp 31.13.64.49:443: connect: connection refused Total in 16700 ms Error: Error building site: logged 2 error(s) Makefile:48: recipe for target 'docker-serve' failed make: *** [docker-serve] Error 255