使用docker线上部署项目
使用docker部署go项目
创建go项目
mkdir test_docker
cd test_docker
code .
初始化一下项目
go mod init test_docker
创建一个gin项目
创建一个gin项目,这里以gin为例,其他go项目都可以。
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "golang-tech-stack.com",
})
})
r.Run() // listen and serve on 0.0.0.0:8080
}
创建Dockerfile
FROM golang:1.18-alpine
# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
GOPROXY=https://goproxy.cn,direct \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64
WORKDIR /project/go-docker/
# COPY go.mod, go.sum and download the dependencies
COPY go.* ./
RUN go mod download
# COPY All things inside the project and build
COPY . .
RUN go build -o /project/go-docker/build/myapp .
EXPOSE 8080
ENTRYPOINT [ "/project/go-docker/build/myapp" ]
FROM golang:1.16-alpine
: 将golang:1.16-alpine
用作此 Docker 构建的基础镜像。- ENV: 环境配置,配置代理,编译环境。
WORKDIR
:工作目录路径。COPY go.* ./
:从项目复制go.mod&go.sum
文件到工作目录。RUN go mod download
:从 go modules 下载项目依赖。COPY . .
:将我们项目中的所有内容复制到工作目录中。RUN go build -o /project/go-docker/build/myapp .
: 在工作目录中构建我们的项目并将其project/go-docker/build/myapp
作为二进制文件输出。EXPOSE 8080
:告诉 docker 我们的代码将暴露端口8080。ENTRYPOINT ["/project/go-docker/build/myapp"]
,当我们运行这个镜像的容器时,它将从我们的构建可执行文件开始执行。
运行docker命令
docker build -f Dockerfile -t test-go-docker:latest .
- -f flag 是我们的Dockerfile.
- -t tag 是镜像标签。
- .命令是当前文件夹下的Dockerfile.
查看docker镜像
docker images
运行镜像
docker run -d -p 8080:8080 test-go-docker:latest
测试
http://192.168.179.128:8080/ping
运行结果
{"message":"golang-tech-stack.com"}
避坑指南
- 要配置ENV,GOPROXY 否则无法下载镜像
- 基础镜像版本要和go mod中的go版本一致
=========================
如果涉及数据库,可以直接文件里调用远程服务器的数据库
前提是远程数据库要开启权限
//赋予任何主机访问数据的权限
例如,你想root使用mypassword从任何主机连接到mysql服务器的话。
12 | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'mypassword' WI TH GRANT OPTION; |
如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
12 | GRANT ALL PRIVILEGES ON *.* TO 'myuser' @ '192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION ; |
然后宝塔面板放行3306端口
联系站长
友情链接
其他入口
QQ与微信加好友
粤ICP备17018681号 站点地图 www.iamdu.com 版权所有 服务商提供:阿里云 Designed by :DU
本站部分资源内容来源于网络,若侵犯您的权益,请联系删除!