Loading

将Go应用通过docker发布到服务器上

将Go应用程序使用docker发布到服务器上

1. 在本地项目的根目录下创建一个 Dockerfile 文件,用于构建自定义的 Go 镜像

FROM golang:alpine

# 移动到工作目录:/app
WORKDIR /app

# 将代码复制到容器中
COPY . .

# 构建应用程序,指定生成的可执行文件的名称为 app
RUN go build -o app .

# 声明服务端口
EXPOSE 8032

# 启动容器时运行的命令
CMD ["./app"]

知识储备:

我们使用基础镜像golang:alpine。这是存储在Docker仓库的基础镜像,这个镜像运行的是alpine Linux发行版,该发行版的大小很小并且内置了Go,非常适合用例

2. 根目录中创建一个名为 .dockerignore 的文件

例如:

# 忽略版本控制系统文件
.git
.svn

# 忽略构建输出文件
*.exe
*.exe~
*.dll
*.so
*.dylib

# 忽略日志文件
*.log

# 忽略临时文件
tmp/
temp/

3. 构建自定义的 Go 镜像

docker build -t my-go-app .

my-go-app 是镜像的名字

4. 运行容器并将应用程序的端口映射到服务器的端口

docker run -d -p 8032:8032 --name my-app my-go-app

my-app 是容器的名字,my-go-app是上面自定义的镜像名字

该命令将镜像关联到容器,并启动容器运行

现在,你的 Go 应用程序将在容器中运行,并通过服务器的端口 8032 对外提供服务。你可以根据需要将服务器的端口映射到其他端口。

注意:在构建 Docker 镜像时,确保 Dockerfile 文件位于应用程序的根目录中,并且应用程序的代码和依赖项都被正确地复制到容器中。另外,根据你的应用程序需要,可能需要在 Dockerfile 中添加其他配置,例如处理环境变量、安装依赖项等。


5. 将 Docker 镜像保存为 tar 归档文件

docker save -o my-go-app.tar my-go-app

6. 将 my-go-app.tar 文件上传到目标 Linux 服务器

scp -r my-go-app.tar root@server_ip:/mnt/

7. 在 Linux 服务器上,使用以下命令加载 Docker 镜像

docker load -i my-go-app.tar

8. 在 Linux 服务器上,使用以下命令运行 Docker 容器

docker run -d -p 10010:8032 --name my-app my-go-app

现在,你可以通过访问server_ip:端口来访问对应的服务。

posted @ 2023-07-19 16:51  你见过魔法嘛  阅读(77)  评论(0编辑  收藏  举报