docker 编译开发代码做镜像
2024-10-08 21:35:05
文件目录
Dockerfile 是docker制作镜像的文件,docker_run.sh是sh文件,gin_test是go编译之后的linux可执行程序,gintest.env是配置文件夹
首先写一个Dockerfile的文件 用来执行build 编译为镜像
# Dockerfile
# 下载基础镜像 这相当于电脑windows系统 所有一切都要在该系统上操作
FROM ubuntu:latest # WORKDIR 指定容器中的工作目录,默认文件都是在哪保存执行
# WORKDIR /webapp/ # 暴露镜像的端口供主机做映射,不过一般都是直接docker run ... -p 宿主机端口:容器端口 ... 设置了 可以设置多个
EXPOSE
EXPOSE # COPY 将主机的文件复制到镜像内 其中ADD和COPY一样 但是ADD会对压缩文件(tar, gzip, bzip2, etc)做提取和解压操作
# COPY如果目的位置不存在,Docker会自动创建所有需要的目录结构,但是它只是单纯的复制,并不会去做文件提取和解压工作
COPY gin_test .
COPY gintest.env . # VOLUME 用来向基于镜像创建的容器添加卷。
# 比如你可以将mongodb镜像中存储数据的data文件指定为主机的某个文件。(容器内部建议不要存储任何数据)
# VOLUME 主机目录 容器目录
# VOLUME /data/db /data/configdb # 镜像内部的执行... 下载数据软件等... 并不是在宿主机上执行 而是到镜像中执行的命令
# 比如这些命令RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME
# 容器内部执行apt更新
# RUN ["apt-get" "update"] # 容器启动时执行指令 ENTRYPOINT
# CMD docker run -it -d -p : ubuntu
# docker_run.sh
#!/bin/bash
# docker build 根据当前目录的Dockerfile文件内容制作镜像 . 代表当前目录(可以绝对路径) -t表示设置镜像名字
docker build -t myweb . # 加载镜像启动容器 根据镜像名字设置启动模式 -itd 表示后台命令行模式... -p在宿主机和容器开启的端口连接一起
# /bin/bash 表示在容器内部执行一些命令但不进入 -c 如果需要找容器内部执行命令 必须有-c 后面这是执行命令 启动容器内复制过去的./gin_test
docker run -itd -p : --name="myweb_docker_one" myweb /bin/bash -c ./gin_test # 展示docker容器的执行状况
docker ps # 持续监控docker容器内部的输出日志 -t 监控日志 --tail 只显示多少条
# docker logs -t --tail= myweb_docker_one # 进入容器内部 docker exec -it 容器名字 bash 执行命令行模式 如何有其他需求可以进入内部执行,不过一般都在创建容器阶段执行了
# docker exec -it myweb_docker_one bash # 进入容器内部执行 接上面的命令
# ./gin_test
将工作目录的四个文件拉取到linux服务器上,最好同一个目录下
注意 docker_run.sh 和gin_test 需要进行添加执行权限
chmod +x docker_run.sh
chmod +x gin_test
还有如果sh文件在win上写的,在linux上执行需要转换格式,不然出错
格式化命令如下
# vim打开sh文件
vim docker_run.sh # 输出
:set fileformat=unix
执行sh文件
# 已输出每行命令的格式执行 bash -x docker_run.sh
输出如下
测试能否外部访问内部web程序
能看到访问该服务器宿主机ip和端口能访问到 容器内的web程序
最新文章
- spark-sql性能测试
- SQL Server 2005使用作业设置定时任务(转)
- iOS开发——UI篇Swift篇&;玩转UItableView(二)高级功能
- JAVA实现word doc docx pdf excel的在线浏览 - 仿百度文库 源码
- (转载)PHP 判断常量,变量和函数是否存在
- android 34 ListView进阶
- CentOS5、6 NFS的安装配置及mount方法
- oracle添加sequence
- Java 代码质量
- matlab学习日志之并行运算
- iframe内document事件监听
- CkEditor批量上传图片(java)
- .Net Core 中间件之主机地址过滤(HostFiltering)源码解析
- JarvisOJ Basic 美丽的实验室Logo
- Redhat 用代理连外网
- Java之NIO
- 林兴爆料小程序很快可以支持各个 App 直接打开小程序
- leecode第二十三题(合并K个排序链表)
- eclipse开发go语言入门案例
- ping命令技巧详解 windows下ping命令知识大全