Docker学习记录(三)-构建非跨平台项目编译环境
来源:互联网 发布:算法设计与分析 沙特 编辑:程序博客网 时间:2024/06/09 15:43
Docker学习记录(三)-构建非跨平台项目编译环境
标签(空格分隔): docker
个人独立博客: http://mrdear.cn
因为毕业设计的问题所以去学了docker,本文描述这个问题解决的过程.
1.问题
在毕业设计AUSTOJ中,判题端使用JNI方式调用C++来编译和执行代码,得到输出结果,Java端进行结果对比.然而该C++代码在mac下无法编译,总是会报错,JNI也会出问题.另外该子模块在mac下无法使用maven打包,所以打包也需要放在docker中.
因此docker需要环境 java maven gcc g++ make
2.构建编译环境
编写dockerfile文件,该文件的maven包我是从本机复制进去的,同样你也可以从外网下载.
Dockerfile:
#构建judger端需要的环境,方便本地测试#基于java8环境FROM java:8#维护人信息MAINTAINER quding niudear@foxmail.com#更新源RUN apt-get update#gcc g++ make安装RUN apt-get install -y gcc-4.9RUN apt-get install -y g++-4.9RUN apt-get install -y build-essential#配置mvn环境ADD apache-maven-3.3.9.tar.gz /usr/localENV M2_HOME /usr/local/apache-maven-3.3.9ENV PATH $PATH:$JAVA_HOME/bin:$M2_HOME/bin#jni环境RUN cp $JAVA_HOME/include/linux/jawt_md.h $JAVA_HOME/include/RUN cp $JAVA_HOME/include/linux/jni_md.h $JAVA_HOME/include/
构建命令: docker build -t dev .
3.挂载运行
运行时需要挂载本项目到docker中,该挂载是映射,因此本地和docker任意位置改变项目中文件都会反映在真实项目中,这也是想要的结果.
挂载命令:
docker run -ti -p 50013:50013 -v /Users/niuli/workspace/git/AUSTOJ2/:/AUSTOJ2 -v /Users/niuli/workspace/git/testcase/:/austoj/testcase dev
该命令以交互模式启动一个docker容器,同时绑定docker的50013端口到此容器的50013,因为我的项目使用的是50013端口.另外我挂载了本项目目录AUSTOJ2和测试数据目录分别到docker的/AUSTOJ2目录和/austoj/testcase目录.
那么启动之后如下所示:
ok,到此编译环境搞定,可以随心所欲的编译启动该子模块,并且还能实时反映到本机目录下
0 0
- Docker学习记录(三)-构建非跨平台项目编译环境
- 构建Docker平台【第一篇】环境准备
- 构建Docker平台【第一篇】环境准备
- 构建Docker平台【第一篇】环境准备
- 构建Docker平台【第一篇】环境准备
- 构建Docker平台【第一篇】环境准备
- 构建一个docker 的java编译环境
- RK瑞芯微平台编译环境搭配记录
- windows平台下vlc编译之一:编译环境构建
- Android studio 项目构建三|编译缓存
- 大数据环境下集成R语言的数据挖掘平台项目记录(三)
- 构建NativeScript跨平台项目
- [cocos2d-x菜鸟学习记录]从构建环境到项目创建
- RT-Thread 学习笔记(三)---用SCons 构建编译环境
- 《学习笔记记录》UE4在WINDOWS平台交叉编译LINUX项目及遇到的问题MSB3075
- 为Arm Linux目标平台构建交叉编译环境
- 构建微服务实验环境(三):Rancher 管理平台
- jenkins+docker 持续构建非docker in docker
- 307. 范围求和队列
- java的数据类型
- NYOJ 5 Binary String Matching
- 最佳的Sublime Text 插件
- c++学习笔记--类的小结
- Docker学习记录(三)-构建非跨平台项目编译环境
- poj1157
- 希尔插入排序
- 更改jupyter-notebook的启动时的默认目录
- LeetCode-Easy部分中标签为HashTable的所有题目
- NSString使用之Copy和Strong
- POJ NOI MATH-7648 蓄水池水管问题
- 112. Path Sum
- AGC007 E