type
status
date
slug
summary
tags
category
icon
password
这篇文章将介绍:
- 如何从源码打包 Docker 镜像
- 如何使用 docker-compose 运行打包好的服务
1)环境准备
以一个 HTTP Server 为例,
我现在有个 Go 的代码库,当前有两个文件,
- go.mod
- main.go
mian.go 的内容如下,
接下来我会使用 Docker 将该服务打包并启动。
2)源码打包 Docker 镜像
在工程目录下创建一个文件,`Dockerfile`,内容如下,
参数注意:
- Dockerfile 划分成了两个阶段:
- builder 阶段:编译阶段,包括:环境准备、依赖下载、生成二进制可执行程序等。
- 运行阶段:会使用一个较小的镜像(alpine:latest)运行打包好的 Go 程序。
ENTRYPOINT
:它定义了容器启动后运行的可执行文件。当运行 Docker 容器时,任何传递给 [docker run] 的参数都会追加到 ENTRYPOINT 后面,成为程序的参数。
3)使用 docker-compose 启动服务
在工程目录下,创建
docker-compose.yaml
文件,内容如下,参数说明:
- command: 这里接着程序运行时跟着的参数,flag 参数就放在这里。
- ports:
- 作用:因为在上面的 flag port 指定了 19090 端口,所以将容器里面的 19090 端口暴露在宿主机上面的 19090 端口上。
- 说明:前后端口分别是:<host_port:container_port>
- 如果手动指定 host_port,让 docker 帮我们挑选一个可用的,则:`:19090` 即可。
更多完善的 docker-compose.yaml 参考如下:
参数说明:
- volumes: 挂载宿主机的文件夹到容器
- environment: 环境变量设置
- restart: unless-stopped。在容器停止运行时自动重启容器,除非您明确地停止容器。
4)运行
当上面文件都配置好后,运行下面的命令即可完成。
- 作者:zouying
- 链接:https://haha.ai/dev-with-docker
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章