[Docker] 使用Dockerfile将项目打包成DockerImage

使用Dockerfile将项目打包成DockerImage

Java Maven 项目打包出Docker镜像

1. 项目结构

src
  main
    ...
  test
    ...
target
Dockerfile
pom.xml

Dockerfile

FROM   openjdk:8-jre-alpine
# EXPOSE 8080
MAINTAINER yangyxd

ADD xxx.jar    xxx-svr.jar

ENTRYPOINT ["java","-jar","xxx-svr"]

2. 打包出 jar

mvn package

打包成功后,将在 target 目录中生成 xxx.jar 文件

3. 生成 dockerImage

在 windows 上,我比较喜欢用bat来执行命令。在项目根目录中,新建 DockerbuildImage.bat 文件:

echo off
echo 编译Docker镜像
cd target
docker build -f ../Dockerfile -t my-project-name:1.0.0 .
docker images
pause

其中, docker images 是在生成成功后顺便列出所有镜像来观察一下,可以去掉。
my-project-name 为自定义的镜像名称,1.0.0 为自定义的镜像版本号。
双击 bat 文件,即可生成镜像。

4. 运行docker镜像

不需要开放服务端口的服务:

docker run --name my-project-svr -i -t -d my-project-name:1.0.0

需要开放指定端口的服务:

docker run --name my-project-svr -i -t -d -p 8080:8080 my-project-name:1.0.0

其中, my-project-svr 为自定义的容器名称。


Node.js 项目打包出Docker镜像

1. 项目结构

dist
doc
node_modules
src
  main
    ...
  test
    ...
Dockerfile
package.json
package-lock.json
tsconfig.json
...

Dockerfile

FROM node:14.15.5-alpine3.13
EXPOSE 8080
# 服务端口
ENV EXPOSE_PORT 8080

# 如果是windows进程设置环境变量 cmd => set ENV_NAME=xxx
ENV ENV_NAME xxx
# 数据库配置
ENV DB_MYSQL_CONFIG '{"host":"xxx","port":3306,"user":"xxx","password":"xxx","database":"xxx","connectTimeout":15000}'

RUN mkdir /xxx_service
WORKDIR /xxx_service
COPY package.json package.json
COPY package-lock.json package-lock.json

# 安装依赖
RUN npm install --registry=https://registry.npm.taobao.org

# 拷贝工程文件
COPY . .

# 构建 输出到dist
RUN npm run build
CMD ["node","--stack_trace_limit=100","dist/app.js"]

2. 生成 dockerImage

新建 DockerbuildImage.bat 文件:

echo off
echo 编译Docker镜像
docker build -f Dockerfile -t my-project-name:1.0.0 .
docker images
pause

其中, docker images 是在生成成功后顺便列出所有镜像来观察一下,可以去掉。
my-project-name 为自定义的镜像名称,1.0.0 为自定义的镜像版本号。
双击 bat 文件,即可生成镜像。

3. 运行docker镜像

和上面 Java 项目运行方式一样。

原文地址:https://www.cnblogs.com/yangyxd/p/15662162.html