docker compose快速入门

docker compose快速入门

docker compose 简单理解就是一件管理多个相关联的docker容器的工具

例子使用技术

golang+gin+redigo+redis

  • 拉取redis镜像
docker pull redis
  • go web 服务端
package main

import (
	"log"
	"net/http"
	"time"

	"github.com/gin-gonic/gin"
	"github.com/gomodule/redigo/redis"
)

var (
	r    *gin.Engine
	conn redis.Conn
)

type RedisMes struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

func init() {
	p := redis.Pool{
		MaxIdle:     100,
		MaxActive:   100,
		IdleTimeout: time.Duration(30),
		Dial: func() (redis.Conn, error) {
            //这里可以通过服务器名字连接
			return redis.Dial("tcp", "redis01:6378")
		},
	}
	conn = p.Get()
}
func StrGet(c *gin.Context) {
	rk := RedisMes{}
	c.ShouldBindJSON(&rk)
	s, err := redis.String(conn.Do("get", rk.Key))
	if err != nil {
		log.Println(err)
		c.JSON(http.StatusOK, gin.H{"400": err})
		return
	}
	c.JSON(http.StatusOK, gin.H{rk.Key: s})
}

func StrSet(c *gin.Context) {
	rk := RedisMes{}
	c.ShouldBindJSON(&rk)
	_, err := conn.Do("set", rk.Key, rk.Value)
	if err != nil {
		log.Println(err)
		c.JSON(http.StatusOK, gin.H{"400": err})
		return
	}
	c.JSON(http.StatusOK, gin.H{"200": "seccess"})
}

func Router() {
	r = gin.Default()
	r.POST("/docker/get", StrGet)
	r.POST("/docker/set", StrSet)
	r.Run(":9099")
}

func main() {
	Router()
}

  • Dockerfile
#使用镜像版本
FROM golang:alpine
#golang环境配置,不然可能无法编译
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn\ 
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64
#定义工作路径
WORKDIR /gindir
#复制代码
COPY . . 
#执行命令,编译golang
RUN go build -o gin .
#执行程序
ENTRYPOINT ["/gindir/gin"]
  • docker-compose.yml
#版本
version: '3'

#定义服务
services:
  #服务器名字
  gin:
    #使用当前路径下的Dockerfile文件创建镜像
    build: .
    #镜像名字
    image: gin:v1
	#容器名字
    container_name: gin1
	#依赖,docker compose运行时,先启动所依赖的容器服务,再启动本服务
    depends_on:
     - redis1
    #端口映射 
    ports: 9099:9099
    #加入局域网络
    networks: gin_net
    #以上可等价于:docker run --name gin1 -p 9099:9099 --net gin_net gin:v1
    
  #另一个服务器名字,被gin服务器所依赖  
  redis1:
    #使用的镜像
    image: redis:latest
    #容器名字
    container_name: redis01
    #端口映射
    ports: 6378:6379
    #加入局域网络
    networks: gin_net
    #以上可等价于:docker run --name redis01 -p 6378:6379 --net gin_net redis
 
#局域网络定义 
networks: 
   gin_net:
  • 启动docker compose
docker-compose up -d --build #启动docker compose服务,-d:后台运行,--build:运行容器前,先构建镜像
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
安装Docker Compose有两种方法。第一种方法是从GitHub上下载Docker*** Compose文件。下载完成后,将下载的文件重命名为docker-compose,并为其添加可执行权限。具体的命令如下: ``` [root@offline-client bin# mv docker-compose-linux-x86_64 docker-compose [root@offline-client bin# docker-compose version ``` 另一种方法是使用pip进行安装,命令如下: ``` pip install docker-compose ``` 安装完成后,您就可以使用Docker Compose来进行容器编排了。以下是一个MySQL示例的使用方法: ``` MySQL示例: 1. 运行MySQL容器 ``` 如果您需要更多的实战操作,您可以参考微服务项目容器编排所使用的docker-compose.yml文件、Dockerfile文件模板、相关配置文件和shell脚本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Docker-compose教程(安装,使用, 快速入门)](https://blog.csdn.net/qq_35995514/article/details/125468792)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [微服务项目容器编排docker-compose.yml、Dockerfile文件模板、相关配置文件、shell脚本](https://download.csdn.net/download/qq_45629145/88248761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值