上周写的文章《五分钟用Docker快速搭建Go开发环境》,文章发出去后有不少阅读量,而且从后台看的数据 60%的人都读完了。今天我自己用下面命令往 容器里的 Go 项目里下载包时发现了一处错误

docker-compose exec app go get ...

docker TortoiseGit 搭建服务器 docker搭建go开发环境_Go

原因是在容器里执行的路径不对,容器的工作目录没有设置,所以还是默认的/go目录,而非项目的根目录。因为微信改文章限制很大,本来是想下个文章用到这个容器环境时再提,不过想着再发可能就差不多到周末了,期间有人按照我的文章自己搭环境出了问题也不太好。

问题出在文章的最后,使用docker-compose 管理容器时在编排文件疏忽了一个设置,下面把编排文件做下更正:

version: '3'
services:
  app:
    image: golang:latest
    working_dir:/go/src/example.com/http_demo
    volumes:
      - $PWD:/go/src/examplecom/http_demo
    ports:
      - "8000:8080"
    command: go run /go/src/example.com/http_demo/main.go

文件中增加了working_dir 配置,用于指定容器中的工作目录:

working_dir:/go/src/examplecom/http_demo

这样,在用 docker-compose exec 向容器中发送命令并执行的时候我们的 go test,go get 类的命令就能在项目的根目录下执行了。

设置了working_dir后我们再使用:

docker exec -it <container name/id> bash

进入运行中的容器时,就会发现终端的工作目录默认已经切换到我们设置的项目根目录里了。

这个错误也是我的一时疏忽吧,如果有按照文章实践的同学一定要看看这篇推送。本周会在《深入学习用Go编写HTTP服务器》对HTTP服务继续进行完善,现在已经正式开工写BUG 了,所以推送可能要到周末了。