docker部署应用

编程

1. docker 部署web应用

  • 编辑简单的文件服务器

package main

import (

"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 bash

cd /app && ./main

# 打开到app 目录并执行程序

  • 生成镜像

配置运行目录为/app,暴露端口号8088, 执行CMD指令bash run.sh

Dockerfile

FROM golang

MAINTAINER 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-web

curl http://localhost:8088

# 查看static 目录

docker exec -it xxxx bash

# 在镜像中执行命令行

  • docker-compose 部署

static-compose.yml

version: "2"		# 使用version2

networks:

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

回到顶部