Docker

  • 推荐以docker方式部署
  • 包含静态文件代理的docker build文件示例(摘取自 i3work 项目):
  • linux中的shell脚本build:
    cd /root/GoPath/src/github.com/ie310mu
    svn checkout  svn://host:port/000.git/ie310go /root/GoPath/src/github.com/ie310mu/ie310go
    
    cd /root/GoPath/src
    svn checkout  svn://host:port/023.i3work /root/GoPath/src/i3work
    
    export GOPATH=/root/GoPath
    cd /root/GoPath/src/i3work
    GOOS=linux GOARCH=amd64 go build --ldflags "-extldflags -static" -tags netgo main.go
    rm -fr /root/createimages/05.02.i3work.go/i3workGo
    mkdir /root/createimages/05.02.i3work.go/i3workGo
    cp -fp /root/GoPath/src/i3work/main /root/createimages/05.02.i3work.go/i3workGo/main
    cp -afpr /root/GoPath/src/i3work/static /root/createimages/05.02.i3work.go/i3workGo/static
    
    
    rm -fr /root/createimages/05.02.i3work.go/usr
    mkdir -pv /root/createimages/05.02.i3work.go/usr/share/zoneinfo/Asia
    cp -f /usr/share/zoneinfo/Asia/Shanghai /root/createimages/05.02.i3work.go/usr/share/zoneinfo/Asia/Shanghai
    docker build -t host:port/ie310/inftc.i3work.go:latest /root/createimages/05.02.i3work.go
    docker rmi -f `docker images | grep  "<none>" | awk '{print $3}'`
    
  • Dockerfile:

    FROM alpine:latest
    
    # 下面几句设置时区
    COPY ./usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    RUN echo 'Asia/Shanghai' >/etc/timezone
    
    COPY ./i3workGo /root/i3workGo
    COPY ./GoRuntimeFiles /usr/local
    
    VOLUME [ "/root/i3workGoConfig", "/root/i3workGoLogs", "/root/i3workGo/upload", "/root/i3workGo/riot-index" ]
    WORKDIR /
    
    CMD  /root/i3workGo/main "-cf /root/i3workGoConfig/appconfig.json"  "-lf /root/i3workGoLogs/i3work.log"
    

  • push脚本:

    docker push host:port/ie310/inftc.i3work.go:latest