Docker 構建 Java Web 開發環境——使用Dockerfile(二)
上篇文章 Docker 構建 Java Web 開發環境(一)使用 docker commit
命令,直接在容器中操作(安裝軟體及配置檔案等),比較簡單直觀;這篇文章使用 docker build
命令和 Dockerfile 檔案,模板化映象構建過程,推薦使用這種方法,這裡需要了解下 DockerFile 的語法和相關命令的意思。
準備工作
Dockerfile指令學習: Dockerfile指令詳解,這篇文章的參考文獻很好。
Dockerfile語法線上檢查工具:http://dockerfile-linter.com/(連結已失效)
建立Dockerfile檔案
可以自己製作基礎映象,或者從倉庫中獲取基礎映象,然後在其基礎上製作新的映象,我是用公司倉庫現有的 java8 映象基礎上開始的。
docker pull XXX/jdk:8 //獲取jdk8映象
mkdir -p docker/java8 //建立目錄準備製作映象,將tomcat8壓縮包放到該目錄下
vi Dockerfile //建立Dockerfile檔案
Dockerfile檔案內容如下
FROM XXX/jdk:8
#RUN yum -y update
ENV JAVA_HOME /apps/svr/jdk
ADD apache-tomcat-8.0.32.tar.gz /usr/local/
RUN mv apache-tomcat-8.0.32 tomcat8
EXPOSE 8080
RUN chmod u+x /usr/local/tomcat8/bin/*.sh
CMD /usr/local/tomcat8/bin/catalina.sh start
Dockerfile注意:CMD 指令在 Dockerfile 中只能使用一次,如果有多個,則只有最後一個會生效。CMD 會在 啟動容器 的時候 執行生效,build 時不執行,而 RUN 只是在 構建映象 的時候 執行生效,後續映象構建完成之後,啟動容器就與 RUN 無關了。因為映象是分層的,一個 ENV 只會新增一層映象,而三個 ENV 則會新增三層映象,為了提升效率推薦使用一個 ENV 定義多個變數。可以使用上面的線上工具檢查下。
建立映象
在剛才建的目錄下執行命令
docker build -t liu/jdk8-tomcat8:1.0 . //構建映象liu/jdk8-tomcat8:1.0
docker images //可以看到剛建的liu/jdk8-tomcat8映象1.0版本
docker run -d -p 8080:8080 liu/jdk8-tomcat8:1.0 //啟動容器
啟動容器後,在瀏覽器上訪問 http://localhost:8080
看看是否成功
也可以先這樣啟動容器
docker run -it -p 8080:8080 liu/jdk8-tomcat8:1.0 /bin/bash
看看是否有錯誤
執行專案
由於專案在 ide 中經常修改,所以可以將打包專案的目錄直接掛載到 tomcat 的 webapps 目錄下面,啟動容器是就會自動啟動應用
docker run -d -p 8080:8080 -v /Users/gary/PracticeCode/monitor/target:/usr/local/tomcat8/webapps liu/jdk8-tomcat8:1.0
常用命令
docker kill $(docker ps -a -q) //殺死所有正在執行的容器
docker rm $(docker ps -a -q) //刪除所有已經停止的容器
docker rmi $(docker images -q) //刪除所有映象
//如果感覺命令太長,可以在 ./bash_profile中給這些命令自定義別名
docker start CONTAINER [CONTAINER...] //執行一個或多個停止的容器
docker stop CONTAINER [CONTAINER...] //停掉一個或多個執行的容器 -t 選項可指定超時時間
docker kill [OPTIONS] CONTAINER [CONTAINER...] //預設 kill 傳送 SIGKILL 訊號 -s 可以指定傳送 kill 訊號型別
docker restart [OPTIONS] CONTAINER [CONTAINER...] //重啟一個或多個執行的容器
docker pause CONTAINER //暫停一個容器,方便 commit
docker unpause CONTAINER //繼續暫停的容器
docker rm [OPTIONS] CONTAINER [CONTAINER...] //移除一個或多個容器 -f強制刪除
相關文章
- dockerfile構建flask環境DockerFlask
- 用 Docker 構建 PHP 開發環境DockerPHP開發環境
- 使用 Docker 搭建簡易的 Java Web 環境 (二)DockerJavaWeb
- 如何構建基於 docker 的開發環境Docker開發環境
- Docker 構建統一的前端開發環境Docker前端開發環境
- docker+jenkins+android環境搭建(使用dockerfile)DockerJenkinsAndroid
- 利用 Docker 構建一個簡單的 java 開發編譯環境DockerJava編譯
- 基於 Docker 構建統一的開發環境Docker開發環境
- 徒手用 Docker 構建自己的 PHP 開發環境DockerPHP開發環境
- docker構建php環境DockerPHP
- Docker 構建PHP 映象環境DockerPHP
- Docker 映象構建之 DockerfileDocker
- 使用 Docker 搭建本地開發環境!Docker開發環境
- 使用 PhpStorm + Docker 搭建開發環境PHPORMDocker開發環境
- Docker構建redis叢集環境DockerRedis
- 使用dockerfile+docker-compose安裝PHP+nginx環境DockerPHPNginx
- 使用dockerfile 部署lnmpr環境DockerLNMP
- docker 靈活的構建 PHP 環境DockerPHP
- 用 Docker 構建 MySQL 主從環境DockerMySql
- Docker(二):Dockerfile 使用介紹Docker
- 使用Docker桌面開發環境功能開發SpringBoot - itnextDocker開發環境Spring Boot
- 基於 Vagrant 構建 PHP 開發環境PHP開發環境
- docker 入門講解 - 構建本地環境Docker
- 基於openvswitch+Docker構建SDN網路測試環境 (使用ovs-docker進行構建)Docker
- 使用dockerfile構建nginx映象DockerNginx
- Docker配置PHP開發環境DockerPHP開發環境
- win 環境使用easyswoole利用docker進行開發Docker
- 基於Docker環境構建redis單機容器DockerRedis
- 使用docker-compsoe構建一個簡單nginx+php環境DockerNginxPHP
- 使用 Docker 開發 - 使用多階段構建映象Docker
- 二、Rust 開發環境Rust開發環境
- centos8中快速搭建Java Web開發環境CentOSJavaWeb開發環境
- 用前端姿勢玩docker【四】基於docker快速構建webpack的開發與生產環境前端DockerWeb
- 圍繞 transformers 構建現代 NLP 開發環境ORM開發環境
- 構建一個基於容器的開發環境開發環境
- 構建你的Office 365開發環境 - IOS版開發環境iOS
- 用Vagrant構建統一的golang開發環境Golang開發環境
- 構建你的Office 365開發環境 - 其他版本開發環境
- 使用Dockerfile構建django專案DockerDjango