一.仓库和镜像创建和上传
1.注册/登录阿里云容器服务中心:https://cr.console.aliyun.com/
2.选择镜像仓库地址(注:这里选择华北1区,位置在青岛)
3.创建镜像仓库:
1).仓库名称填写项目名称
2).仓库类型选择为私有
3).代码源根据需求选择(初期可以使用本地仓库,后期可以选择使用git动态上传)
4.本地镜像上传(如需本地手动上传)
5.maven服务配置(如果是使用docker-maven-plugin工具自动上传,则需配置)
1)在maven的setting.xml中增加如下配置:
<servers>
<server>
<id>docker-aliyun</id>
<username>******</username>
<password>******</password>
<configuration>
<email>****@163.com</email>
</configuration>
</server>
</servers>
2)在项目的pom.xml中添加如下配置
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 私有仓库配置,需要settings.xml文件配合serverId-->
<serverId>docker-aliyun</serverId>
<registryUrl>${docker.repostory}</registryUrl>
<!--install阶段也上传,否则只有deploy阶段上传-->
<pushImage>true</pushImage>
<imageName>${docker.repostory}/${docker.registry.name}/${docker.id}</imageName>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<imageTags>
<!--docker的tag为项目版本号、latest-->
<imageTag>latest</imageTag>
</imageTags>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
二、DockerFile文件的编写
样例:
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD user-service-1.0.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
注:
1.From 为镜像的基础镜像,这里选的是jdk8+centos的基本镜像
2.VOLUME 指令创建的挂载点(无法指定主机上对应的目录,是自动生成的)
3.ADD 将jar包上传至容器上
4.ENTRYPOINT容器启动时执行指令
5.如果项目需要指定等待另外一个项目启动后启动,则可以删除ENTRYPOINT,使用wait.it.sh文件,通过docker-compose来启动,后边会详细讲解
三Dockercompose.yml文件编写
样例:
1.services为服务根节点,config/generator为项目的名称,可根据具体项目响应更改
2.Image为加载的镜像的名称,由于是私有镜像,在拉取镜像前,需要在终端输入如下命令(这样才有权限拉取镜像):
sudo docker login –username=【账号名称】 registry.cn-qingdao.aliyuncs.com
3.links为互通的容器,使用了links的容器之间,可以通过项目名称直接访问,如:
在generator容器中使用http://config:8888即可访问config的服务
4.ports为容器暴露的端口号
5.Entrypoint 为容器启动后运行的命令,这里的命令意思是等待config服务启动后执行command的命令,超时时间为6s
6.同样docker-compose也可以配置挂载点,如:
volumes:
- ./logstash/conf.d:/etc/logstash/conf.d:ro
- ./logstash/patterns:/etc/logstash/patterns:ro
:ro(readonly)的意思是只允许读操作,不写则默认可以读写