使用 Docker Init 初始化一个 Go 项目
在这一步中,我们将初始化一个新的 Go 项目,并使用 docker init
生成必要的 Dockerfile 和 docker-compose.yml 文件。这将为我们将 Go 应用程序容器化提供一个起点。
首先,让我们为我们的 Go 项目创建一个新目录。在 LabEx 虚拟机中打开一个终端,并执行以下命令:
mkdir my-go-app
cd my-go-app
这些命令会在 ~/project
目录下创建一个名为 my-go-app
的新目录,然后将当前目录更改为 my-go-app
。
接下来,我们需要初始化一个 Go 模块。这将创建一个 go.mod
文件,用于跟踪我们项目的依赖项。
在终端中执行以下命令:
go mod init my-go-app
此命令将初始化一个名为 my-go-app
的新 Go 模块。你应该会看到类似于以下的输出:
go: creating new go.mod: module my-go-app
go: to add module requirements and sums:
go mod tidy
现在,让我们创建一个简单的 Go 应用程序。使用 nano
编辑器在 my-go-app
目录下创建一个名为 main.go
的新文件:
nano main.go
将以下代码添加到 main.go
文件中:
package main
import "fmt"
func main() {
fmt.Println("Hello, Docker!")
}
这是一个简单的 Go 程序,它会在控制台打印“Hello, Docker!”。
按 Ctrl+X
,然后按 Y
,再按 Enter
保存文件并退出 nano
编辑器。
现在,我们将使用 docker init
来生成 Dockerfile 和 docker-compose.yml 文件。不过,LabEx 虚拟机默认没有安装 Docker Compose。我们需要先安装它。
使用 curl
下载最新版本的 Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
使 Docker Compose 二进制文件可执行:
sudo chmod +x /usr/local/bin/docker-compose
通过检查 Docker Compose 版本来验证安装情况:
docker-compose --version
你应该会看到类似于以下的输出:
docker-compose version 1.29.2, build xxxxxxx
现在 Docker Compose 已安装,我们可以继续使用 docker init
。
在终端中执行以下命令:
docker init
docker init
会询问一系列问题,以配置 Dockerfile 和 docker-compose.yml 文件。以下是本实验的推荐答案:
- 你想给这个应用程序取什么名字?
my-go-app
- 这个应用程序监听哪个端口?
3000
(这是一个占位符,在这个简单的示例中我们实际上不会使用端口)
- 要执行的主文件是什么?
main.go
- 你想包含 Docker Compose 配置吗?
Yes
- 请选择一个 Docker Compose 版本:
2.0
回答完这些问题后,docker init
会在 my-go-app
目录下生成一个 Dockerfile
和一个 docker-compose.yml
文件。
你可以使用 cat
命令查看生成文件的内容:
cat Dockerfile
cat docker-compose.yml
这些文件为在 Docker 容器中构建和运行我们的 Go 应用程序提供了基本配置。在下一步中,我们将定制这些文件以更好地满足我们的需求。