Dockerfile
dockerfile用来创建docker镜像,可以不依赖开发和生产环境的进行部署运行,方便迁移。
dockerfile关键字
所有关键字要求大写,位于首行。docker是层次系统,每运行一个关键字就会新建一层,能放在一起的命令尽量放在一个关键字中,减小镜像大小。
FROM 基于某一个镜像创建新的镜像
MAINTAINER 镜像的创建者+邮箱
RUN 创建镜像时运行的命令docker build
EXPOSE 当前容器对外暴露出的接口
WORKDIR 跳转到当前目录
ENV 构建镜像中用到的环境变量
ADD 将本机的文件或目录拷贝到镜像中,和COPY功能类似,ADD会额外执行解压操作
COPY 将本机的文件或目录拷贝到镜像中
VOLUME 数据卷,数据保存和持久化工作
CMD 镜像创建容器时运行的命令,docker run 后面加command会覆盖掉dockerfile中的CMD
ENTRYPOINT 镜像创建容器时运行的命令,docker run 后面加command会追加dockerfile中的CMD
ONBUILD 当此镜像被其他镜像继承时运行的命令
示例
借鉴自https://www.liwenzhou.com/posts/Go/how_to_deploy_go_app_using_docker/
FROM golang:alpine
# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64
# 移动到工作目录:/build
WORKDIR /build
# 将代码复制到容器中
COPY . .
# 将我们的代码编译成二进制可执行文件app
RUN go build -o app .
# 移动到用于存放生成的二进制文件的 /dist 目录
WORKDIR /dist
# 将二进制文件从 /build 目录复制到这里
RUN cp /build/app .
# 声明服务端口
EXPOSE 8888
# 启动容器时运行的命令
CMD ["/dist/app"]
上传镜像
1.登录docker官网https://hub.docker.com/
创建一个镜像仓库1318686278/tyldocker
此时的仓库为空
2.登录自己的docker账号
docker login -u xxx -p xxx
3.用dockerfile创建镜像
docker build -t app .
创建一个名字叫app的镜像
4.修改镜像标签
docker tag app 1318686278/tyldocker:1.0
将app修改为1318686278/tyldocker,版本号为1.0,名字与仓库名对应
如果第3步已经起名相同,此步可忽略
5.上传镜像
docker push 1318686278/tyldocker:1.0
6.登录到云服务器下载镜像
先登录docker login
docker pull 1318686278/tyldocker:1.0
7.创建容器
docker run --name tyldocker_v1 -itd 1318686278/tyldocker:1.0
此时就可以在本地windows或者mac进行开发,开发完后打包镜像部署到Linux中,从而避免在Linux中开发。
分阶段构建镜像
打工了。。下班写