1 )Nodejs 程序
const express = require('express')
const app = express()
app.get('/', (req, res) => {
res.send('首页')
})
app.get('/news', (req, res) => {
res.send('news')
})
// dokcer 做端口映射不要指定ip
app.listen(3000)
2 ) 运行镜像
3 )维护容器
4 )测试迭代
1 )编写 Dockerfile
FROM node
COPY . /root/nodedemo # 将当前项目所有文件拷贝到 /root/nodedemo目录中
WORKDIR /root/nodedemo
RUN npm i cnpm -g --registry=https://registry.npm.taobao.org
RUN cnpm i
ENTRYPOINT node app.js
EXPOSE 3000
2 ) 构建镜像
docker build -t nodedemo:v1.0.0 .
3 ) 运行容器
docker run -itd -p 3000:3000 nodedemo:v1.0.0
4 ) 检查
1 )部署编译好的golang项目
源码目录
main.go
package main
import (
"fmt"
"net/http"
)
func handlerHello(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "hello docker")
}
func main() {
http.HandleFunc("/", handlerHello)
http.ListenAndServe(":8080", nil)
}
Dockerfile
FROM centos
COPY . /root/godemo # 将当前项目拷贝到容器内的目录
WORKDIR /root/godemo
EXPOSE 8080
ENTRYPOINT ["./goweb"]
go build -t goimage .
docker images 获取刚编译好的 goimage 的 imageId
docker run -itd --name my_go_image -p 8080:8080 imageId
docker ps 获取当前容器id
docker exec -it 容器id /bin/bash
curl 127.0.0.1:8080 访问容器上的go应用,正常
exit 退出到物理机
curl 127.0.0.1:8080 访问物理机上的go应用,正常
注意:
之后走正常的,将web应用打包镜像,运行生成容器,访问ip
注意,golang 应用 和 beego框架应用都类似
2 )部署未编译好的golang项目和beego项目
安装golang的方法1
安装golang的方法2
Dockerfile
FROM golang
ADD . /root/goweb
WORKDIR /root/goweb
RUN go build # 执行编译
EXPOSE 8080
ENTRYPOINT ['./goweb']
部署未编译的 beego 项目
FROM golang
COPY . /root/beegodemo
WORKDIR /root/beegodemo
ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn
RUN go get github.com/beego/bee
EXPOSE 8082
ENTRYPOINT ['bee', 'run']