基础的环境
1 go程序
2 mysql
3 redis
最开始搭建的想法
我就是想单独的创建三个docker,然后链接使用,就是go可以链接mysql和redis
开始搭建
1 首先创建一个docker的网络,将这三个容器全部放入这个网段中,他们才可以通过内网访问,可能会有人问,为什么不使用外网,这个原因有很多,就不一一说了,就说一个,对于mysql和redis,我只需要他们的入口只有一个,那就是go程序
先看一下你现已有,已存在的docker网络,如果有空余的bridge,就不用创建了
docker network ls
我们默认使用桥接模式,你也可以自己自定义
docker network create appNetwork(网络名称随意,但后面需要使用)
docker network create --driver bridge appNetwork
--drvier:创建的网络的类型:win一般为nat linux为 bridge
--subnet=172.20.0.3/16 也可以指定子网和网关,我一般指定,只使用drvier,后面的让它自动分配
--gateway=172.20.0.1
2 将容器加入到网络中;
可以在容器启动时,指定加入的网络,使用
docker run -itd 。。。。 --network appNetwork 。。。
如果你的容器已经启动了,但是没有加入到网络中 也没事,使用
docker network connect appNetwork yourContainerNameOrId
然后使用下面的命令看一下这个网络中已经加入的容器
docker network inspect appNetwork
注意:所有需要链接的容器,需要在同一个网络中,内网
3 配置内网ip以及确保指定的端口已经允许暴漏出来,还有就是需要配置好帐密。(ip在docker network inspect 中还有展示)
4 启动使用
其实这些操作 可以使用docker-compose 来解决,直接一个docker-compose文件做好配置 也可以启动使用,更简单,但是对与这种情况 可以了解一下。
对了 附带一下,简单的docker file 文件
FROM golang:1.17 AS build
LABEL author="weishunuan@163.com"
WORKDIR /workspace/app
ARG go_proxy=https://goproxy.cn
ENV GO111MODULE=on \
GOPROXY=${go_proxy} \
CGO_ENABLED=0
COPY . .
EXPOSE 8181
RUN go mod tidy && go build -a -o main main.go
ENTRYPOINT ["./main"]
docker 的打镜像
docker build -t mytestapp:v1 .