1. 编写Dockerfile文件
FROM golang:1.19
MAINTAINER "xxx@gmail.com"
WORKDIR /home/go/src/sanHeRecruitment
ADD . /home/go/src/sanHeRecruitment
RUN go build main.go
EXPOSE 9090
ENTRYPOINT ["./main"]
参数解释:
FROM -> 母镜像
MAINTAINER -> 维护者信息
WORKDIR -> 工作目录
ADD -> 将文件复制到镜像中
RUN -> 执行操作(就跟在终端执行语句一样)
EXPOSE -> 暴露端口
ENTRYPOINT -> 程序入口
2. 构建镜像
docker build -t sanhe .
注意镜像名称不能有大写字母
运行
docker run -p 9090:9090 -d sanhe[images名称]
-p
本机端口:镜像端口
-d
后台运行
注意:当你的项目有需要连接到本地的端口时你不能从容器中使用localhost访问主机上的服务,你必须使用主机的ip地址来访问。
原因:默认的docker将使用桥,桥将为您的容器设置一个内部网络,所以当容器使用localhost时,它并不意味着主机,它意味着容器自身的网络。
解决办法: --net=host。
docker run --net=host -p 9090:9090 -d sanhe
简单操作
- 进入容器
docker exec -it 49ec8845ac2a(容器名称) bash
- 拷贝容器中的文件到宿主机
docker cp 49ec8845ac2a(容器名称):/home/go/src/sanHeRecruitment/logs/system.log.20230318.log(内部路径) /home(外部路径)