docker准备工作
- 添加公司私库地址到配置文件
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com"],
"insecure-registries":["私库地址1","私库地址2","10.131.11.22:4567"]
}
- 登陆到公司私库
docker login 10.131.11.22:4567
- 创建一个目录(任意位置),上传相关文件,必须包含Dockerfile、run.sh、项目jar包
Dockerfile
FROM java:8
COPY ./files /files/excelTemplate
ADD 你的项目.jar app.jar
ADD run.sh run.sh
RUN chmod 777 run.sh
EXPOSE 端口号
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["/run.sh"]
其中第二行代码为复制该目录下的files文件夹中的内容到服务器的files/excelTemplate文件夹中,在你的项目中可以删除,添加的项目.jar必须与你上传到该目录下的jar包名称保持一致。
#!/bin/bash
mkdir -p /files/imgExamine /files/temp
java -jar -Xmx2048m -Xms2048m \
app.jar \
--spring.redis.host=$redisHost \
--spring.redis.port=$redisPort \
--spring.datasource.url=$dataSourceUrl \
--spring.datasource.username=$dataSourceUserName \
--spring.datasource.password=$dataSourceUserPwd \
其中第二行代码,为本项目特有,可以删除。而 --spring.redis…等配置为在建云服务时,可以手动添加的参数,一般数据库的连接信息因为各个环境不一致,所以需要手动配置(配置方式常见为两种,1.创建服务时,手动添加。2.参数过多时,可以用加载配置文件的方式。具体示云服务器而定)。
示例:
dataSourceUserName=zlw
dataSourceUserPwd=123456
注意Dockerfile和run.sh文件的编码格式是否为linux的格式
镜像基本操作步骤
- 创建镜像
docker build -t 镜像名:版本号 .
或(执行下述操作,则可省略打tag的步骤)
docker build -t 10.131.11.22:4567/dev-zlw-manage/your-project-name:2.0.2.6 .
注意:build语句必须以 . 结尾
- 打标签tag(可以省略)
docker tag 镜像id 镜像空间/镜像名称:版本
示例:
docker tag 0a52ba16dfad 10.131.11.22:4567/dev-zlw-manage/manage:2.0.2.6
- 推送镜像(必须先添加并登陆私库)
docker push 镜像空间/镜像名称:版本
示例:
docker push 10.131.11.22:4567/dev-zlw-manage/manage:2.0.2.6
常见异常
- build命令没有以 . 结尾
"docker build" requires exactly 1 argument.
See 'docker build --help'.
Usage: docker build [OPTIONS] PATH | URL | -
Build an image from a Dockerfile
- 没有添加私库到daemon.json中
Error response from daemon: Get https://10.131.9.14:5000/v2/: http: server gave HTTP response to HTTPS client