Dockerfile样例

文章展示了如何使用Dockerfile来构建基于Go语言的HTTP服务应用和Node.js的Vue前端项目。Go应用监听8000端口,展示请求信息。Node.js应用基于Vue,端口8080对外暴露。同时,包含了SpringBoot应用的Docker配置,使用Java环境并设置运行参数。
摘要由CSDN通过智能技术生成

[ec2-user@ip-10-0-0-8 simpleHttp]$ cat Dockerfile
FROM golang:alpine
# Set necessary environmet variables needed for our image
ENV GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64
# Move to working directory /build
WORKDIR /build
# Copy the code into the container
COPY ./simpleHTTP.go .
# Build the application
RUN go build -o simpleHTTP ./simpleHTTP.go
# Move to /dist directory as the place for resulting binary folder
WORKDIR /dist
# Copy binary from build to main folder 

#COPY ./exam-admin-0.0.1-SNAPSHOT.jar /opt/exam
RUN cp /build/simpleHTTP .
EXPOSE 8000
ENTRYPOINT ["./simpleHTTP"]

simpleHTTP.go 文件内容:

package main

import (
    "fmt"
    "log"
    "net"
    "os"
     "net/http"
)

func main() {
    log.Print("simplehttp: Enter main()")
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe("0.0.0.0:8000", nil))
}

// printing request headers/params
func handler(w http.ResponseWriter, r *http.Request) {

    log.Print("request from address: %q\n", r.RemoteAddr)
    fmt.Fprintf(w, "%s %s %s\n", r.Method, r.URL, r.Proto)
    for k, v := range r.Header {
        fmt.Fprintf(w, "Header[%q] = %q\n", k, v)
    }
    fmt.Fprintf(w, "Host = %q\n", r.Host)
    fmt.Fprintf(w, "RemoteAddr = %q\n", r.RemoteAddr)
    if err := r.ParseForm(); err != nil {
        log.Print(err)
    }
    for k, v := range r.Form {
        fmt.Fprintf(w, "Form[%q] = %q\n", k, v)
    }
    fmt.Fprintf(w, "\n===> local IP: %q\n\n",GetOutboundIP())
    fmt.Fprintf(w, "Env message = %s\n", os.Getenv("message"))
}

func GetOutboundIP() net.IP {
    conn, err := net.Dial("udp", "8.8.8.8:80")
    if err != nil {
        log.Fatal(err)
    }
    defer conn.Close()

    localAddr := conn.LocalAddr().(*net.UDPAddr)

    return localAddr.IP
}
 

[ec2-user@ip-10-0-0-8 exam-vue]$ cat Dockerfile
FROM node:12
ARG REGISTRY=https://registry.npm.taobao.org
WORKDIR /opt/exam-frontend
COPY . /opt/exam-frontend
EXPOSE 8080  #vue项目端口对外暴露
RUN ls && npm i --registry ${REGISTRY}
CMD ["npm", "run", "prod"]
[ec2-user@ip-10-0-0-8 exam-admin]$ cat Dockerfile
FROM openjdk:8
RUN mkdir -p /opt/exam/
COPY ./exam-admin-0.0.1-SNAPSHOT.jar /opt/exam
COPY ./run.sh /opt/exam/
COPY ./static/ /opt/exam  #上传文件夹
EXPOSE 8888   #SpringBoot项目端口对外暴露
WORKDIR /opt/exam
ENTRYPOINT ["sh", "/opt/exam/run.sh"]
[ec2-user@ip-10-0-0-8 exam-admin]$ cat run.sh
#!/bin/sh
if [ -z $JAVA_OPTS ];then
    JAVA_OPTS="-Xms128m -Xmx128m"
fi
if [ -z $JAR_PATH ];then
    JAR_PATH="/opt/exam"
fi
if [ -z $EXAM_ENV ];then
    EXAM_ENV="prod"
fi
if [ x$LOG != "xfalse" ];then
    mkdir -p logs
    LOGGING_OPT="--logging.path=./logs"
fi
#echo $JAVA_OPTS -Dlogging.path=./logs  -jar ${JAR_PATH}/*.jar
#java $JAVA_OPTS -Dlogging.path=./logs  -jar ${JAR_PATH}/*.jar
echo $JAVA_OPTS -Dlogging.path=./logs -DSpring.profiles.active=$EXAM_ENV -jar ${JAR_PATH}/*.jar
java $JAVA_OPTS -Dlogging.path=./logs -DSpring.profiles.active=$EXAM_ENV -jar ${JAR_PATH}/*.jar

cd fleuntbit
docker build -t fleuntbit:v3 .
docker tag fleuntbit:v3 402097323/fleuntbit:v3
docker push 402097323/fleuntbit:v3
docker run -d -p 111.20.72.43:8888:8080 -v /usr/local/webapps:/usr/local/webapps -it --name tomcat77 tomcat:7 bash

docker run -d -p 8888:8080  -it --name simpleHTTP afbb40525032 bash

docker exec -it d07f46dc2535 /bin/sh


 

Docker常用命令大全(万字详解) - 腾讯云开发者社区-腾讯云

Docker 常用命令速查手册 - 知乎

docker run -it id 
docker build -t exam-admin-prod:v1 .

docker tag exam-admin-prod:v1 402097323/exam-admin-prod:v1
docker push 402097323/exam-admin-prod:v1


docker build -t  fleuntbit:v1 .

docker tag  fleuntbit:v1 402097323/fleuntbit:v1
docker push 402097323/fleuntbit:v1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值