1、目的
创建一个java和maven的镜像,这样公司前端就不用本地再装java和maven了。
2、步骤
1、下载jdk11和maven的tar包,解压缩。
2、修改maven为国内源。
cd apache-maven-3.8.1/conf
# 找到settings.xml,在文件里面的mirrors模块下面加入下面内容
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
3、创建Dockerfile,注意Dockerfile和jdk11,apache-maven-3.8.1是同一级。
FROM centos:7
COPY jdk-11.0.12 /var/local/jdk11
COPY apache-maven-3.8.1 /var/local/apache-maven-3.8.1
ENV JAVA_HOME /var/local/jdk11
ENV MAVEN_HOME /var/local/apache-maven-3.8.1
ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
4、创建镜像。
# 要在Dockerfile目录下执行
docker build -t my_java:dev .
5、把镜像run起来进入容器看下java和maven装好了没。
docker run -it my_java:dev /bin/bash
# 查看java
java -version
# 查看maven
mvn -v
出现类似下图说明java和maven都装好了。
6、如果本地用的docker-compose,可以在对应的启动文件dev.yml里加上映射和启动命令。
my-java:
image: my-java:dev
working_dir: /data/projects/shop
command: ./maven_package.sh
ports:
- 9999:9999
volumes:
- /d/projects/shop:/data/projects/shop:rw
tty: true
container_name: my-java
network_mode: "bridge"
然后,你本地D盘下面的工作目录就会被映射到容器里面的/data/projects/shop,在启动时还会在working_dir路径下执行command对应的自定义脚本,比如下载maven依赖和启动java项目。