docker 编译开发代码做镜像
文件目录
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程序
docker 编译开发代码做镜像的更多相关文章
- Android 开发怎样做代码加密或混淆?
欢迎访问网易云社区,了解更多网易技术产品运营经验. 在大公司怎么做android代码混淆的?发现他们的软件用apktool反编译居然没看到classes.dex文件和当前安卓APP加固到底该如何做到防 ...
- 【转载】使用Docker Hub官方gcc:latest镜像编译C/C++程序以及缩小镜像的方法
摘要:使用Docker Hub官方gcc:latest镜像(1.2GB)编译C/C++程序,以及缩小镜像的方法. 方法1: 在gcc容器里编译C/C++程序 将C/C++代码运行在gcc容器内的最简单 ...
- 几款比较好用的C语言的集成开发环境及在windows下用命令行编译C代码
最近要用到C,所以尝试了这几款windows平台下比较好的IDE. VS2015:比较复杂和庞大,据说从2013版本开始支持C99标准. C-free:轻巧,但是不支持C99. vc++6.0:很多学 ...
- [译]如何使用 Docker 组件开发 Django 项目?
原文地址:Django Development With Docker Compose and Machine 以下为译文 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包 ...
- Docker详细介绍安装与镜像制作和拉取
一.Docker是什么? 产生背景: 开发和运维之间因为环境不同和导致的矛盾(不同的操作系统.软件环境.应用配置等)DevOps 代码.系统.环境.配置等封装成镜像Image--->运维: 集群 ...
- Docker学习笔记之从镜像仓库获得镜像
0x00 概述 之前我们说到了,Docker 与其他虚拟化软件的一处不同就是将镜像管理纳入到了功能之中.实现虚拟化只是程序能够无缝移植的一部分,而有了镜像管理,就真正取代了我们在移植过程中的繁琐操作. ...
- 如何使用URLOS进行docker应用开发
使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如今在微服务架构越来越流行的情况下,微服务+Docker的完 ...
- [转]利用Docker构建开发环境
利用Docker构建开发环境 Posted by makewonder on 2014 年 4 月 2 日 最近接触PAAS相关的知识,在研发过程中开始使用Docker搭建了自己完整的开发环境, ...
- 利用Docker构建开发环境
最近接触PAAS相关的知识,在研发过程中开始使用Docker搭建了自己完整的开发环境,感觉生活在PAAS时代的程序员真是幸福,本文会简要介绍下Docker是什么,如何利用Docker来搭建自己的开发环 ...
随机推荐
- 吴裕雄--天生自然 Hadoop大数据分布式处理:关闭CenterOS 7防火墙
使用命令:systemctl status firewalld.service 查看防火墙状态 执行后可以看到绿色字样标注的“active(running)”,说明防火墙是开启状态 使用命令:syst ...
- deeplearning.ai 序列模型 Week 2 NLP & Word Embeddings
1. Word representation One-hot representation的缺点:把每个单词独立对待,导致对相关词的泛化能力不强.比如训练出“I want a glass of ora ...
- [LC] 232. Implement Queue using Stacks
Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of ...
- pycharm中无法调用pip的安装包
https://blog.csdn.net/sinat_23619409/article/details/79962518 较详细:https://blog.csdn.net/weixin_41287 ...
- springboot 配置热部署 及 热部署后依旧是404的坑
springboot配置热部署的教程网上一大堆: 个人喜欢这种方式: https://www.cnblogs.com/winner-0715/p/6666579.html 本文主要强调的是,大家如果配 ...
- spring给予XML配置的声明式事务
步骤: 1.添加aop.tx命名空间声明: 2.配置事务管理器: 3.配置增强: 4.配置aop 具体xml设置如下: <?xml version="1.0" encodin ...
- 吴裕雄--天生自然python学习笔记:Python3 MySQL 数据库连接 - PyMySQL 驱动
什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. PyMySQL 遵循 Python 数据库 AP ...
- Java完成生产者消费者模型
生产者和消费者模型,是多线程中的典型模型,这里使用Java完成该模型 ServerTest.java 生产者代码 package com.orange.threadmodel; import java ...
- 在腾讯云centos7.2上安装配置Node.js记录
应为爱好前端所以打算在腾讯云服务器上安装JavaScript引擎Node.js,下面是安装步骤: 安装准备: 下载node.js的.tar.xz安装包:https://nodejs.org/dist/ ...
- S07
push 和 append 的表现不同, push 一次只添加单个参数到列表末端, append 一次可以添加多个参数. use v6; my @d = ( [ 1 .. 3 ] ); @d.push ...