开发环境 Windows
1.go 交叉编译
1.1go env 查看编译环境 (其他环境指令不一样)
CGO_ENABLED=0
GOOS=linux
GOARCH=amd64
设置命令 go env -w GOOS=linux (示例)
1.2编译二进制文件
找到main.go 位置 go build main.go
生成main 的二进制文件
2.上传文件到云服务器
2.1 制作Dockerfile
vim Dockerfile
内容:
FROM alpine
COPY ./main /tmp/
WORKDIR /tmp/
RUN chmod +x main
ADD config /tmp/config
EXPOSE 17117
ENTRYPOINT ["./main"]
workdir 执行run命令的位置
copy 只复制本地文件或目录
add 复制目录 还可以做提取和解压动作 (如果是gzip、gz等格式压缩文件),会自动解压
ADD config /app/config (目的是把配置文件包含进去,上面交叉编译生成main文件 只包括 .go 文件)
RUN 在当前镜像运行指定命令
USER 指定镜像以什么身份去运行
VOLUME 创建卷 (指定路径 如 /usr/root )
RUN apt-get install -y nginx
2.2编译镜像image
docker build -t dockerase-tempsense:1.0 . // 镜像名不能大写
3.推送Docker Harbor
登录 harbor
docker login ip 输入admin password
更改镜像tag
docker tag 原镜像名 harbor IP/ harbor 项目名/ 原镜像名
删除原镜像
docker rmi 原镜像名
推送镜像
docker push 新镜像名(上面更改tag后的镜像名)
拉取镜像
docker pull ip:port / 项目名/ 镜像名:版本号
在Docker Hub查找镜像
docker search alpine
构建缓存
dockerfile 每次构建都会有一个缓存,如果再次构建会在此基础上接着构建,
如果不想使用缓存
docker built --no-cache -t 镜像名 .
基于构建缓存的Dockerfile模板
FROM ubuntu:14.04
MAINTAINER james "123@163.com"
ENV REFRESHED_AT 2020-10-12
RUN apt-get -qq update
ENV 指令设置一个环境变量,每次修改时间,就可以重新构建镜像,再重新执行一边apt-get update 命令
查看docker端口映射
docker ps -l
查看指定端口
docker port 容器名 容器端口80
删除容器
docker rm 容器名或id
删除镜像
docker rmi 镜像名或id