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 参考如下:
参数说明:
  1. volumes: 挂载宿主机的文件夹到容器
  1. environment: 环境变量设置
  1. restart: unless-stopped。在容器停止运行时自动重启容器,除非您明确地停止容器。

4)运行

当上面文件都配置好后,运行下面的命令即可完成。
 
如何监控服务状态自建密码管理服务 Bitwarden / Vaultwarden
Loading...