docker部署应用
1. docker 部署web应用
- 编辑简单的文件服务器
package mainimport (
"fmt"
"net/http"
"os"
"path"
"path/filepath"
)
func main() {
p, _ := filepath.Abs(filepath.Dir(os.Args[0]))
p = path.Join(p,"static")
http.Handle("/", http.FileServer(http.Dir(p)))
err := http.ListenAndServe(":8088", nil)
if err != nil {
fmt.Println(err)
}
}
- 工程配置
使用go build 编译为可执行文件main, 监听端口为8088, 文件夹目录为 static,建立目录格式如下:
-.|--Dockerfile
|--main
|--static
|--run.sh
run.sh
#! /usr/bin/env bashcd /app && ./main
# 打开到app 目录并执行程序
- 生成镜像
配置运行目录为/app,暴露端口号8088, 执行CMD指令bash run.sh
Dockerfile
FROM golangMAINTAINER jim
WORKDIR /app
COPY . .
EXPOSE 8088
CMD ["/bin/bash", "/app/run.sh"]
在当前目录生成docker镜像,使用docker images 查看生成的镜像
docker build -t go-web .
- 启动镜像
使用指令启动指令, --rm 在结束运行后删除 -d 在后台执行 -p 暴露本机端口给8088 -v 暴露本机完整路径给/app/static 指定名称为go-web1
docker run -d --rm -p 8088:8088 -v /home/phoenix/workspace/static:/app/static --name=go-web1 go-webcurl http://localhost:8088
# 查看static 目录
docker exec -it xxxx bash
# 在镜像中执行命令行
- docker-compose 部署
static-compose.yml
version: "2" # 使用version2networks:
basic: # 创建网络类型, docker network ls
services:
web: # 服务名
container_name: web_app # 镜像名
image: go-web:v0.1 # 镜像地址
ports:
- "8089:8088"
volumes:
- /home/phoenix/workspace/static:/app/static:rw
networks:
- basic
启动指令
docker-compose -f static-compose.yml up -d web# 使用文件名发布服务后台启动
docker ps
参考
- 简书
以上是 docker部署应用 的全部内容, 来源链接: utcz.com/z/513574.html