最近闲来无聊记录一下docker部署golang项目到阿里云服务器中
1.创建目录在目录内创建main.go文件然后在main.go中写一个很简单的程序做测试内容如下:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("deploy successful"))
})
server := &http.Server{
Addr: ":8888",
}
fmt.Println("start server")
if err := server.ListenAndServe(); err != nil {
fmt.Printf("start server failed, err:%v\n", err)
}
}
2.在你的Golang项目根目录下创建一个名为Dockerfile的文件,该文件用于定义Docker镜像的构建规则。示例Dockerfile内容如下:
# 使用官方的Go镜像作为基础镜像
FROM golang:latest
# 设置工作目录
WORKDIR /app
# 将当前目录下的所有文件复制到容器的工作目录
COPY . .
# 编译Go代码
RUN go build -o main .
# 设置容器启动时执行的命令
CMD ["./main"]
3.打开终端,进入到Golang项目根目录,并执行以下命令来构建Docker镜像:
docker build -t your_image_name .
其中,your_image_name是你想要给镜像起的名称,注意最后的"."表示Dockerfile在当前目录下。
4.完成镜像构建后,使用以下命令登录到阿里云的Docker镜像仓库:
docker login --username=your_username --password=your_password registry.cn-hangzhou.aliyuncs.com
其中,your_username和your_password是你的阿里云账号信息。
5.登录到阿里云服务器,安装Docker,并执行以下命令来拉取并运行镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/your_username/your_image_name
docker run -d -p 8888:8888 registry.cn-hangzhou.aliyuncs.com/your_username/your_image_name
其中,your_image_name是之前推送到阿里云镜像仓库的镜像名称。