[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 項目運行方式一樣。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM