1. 程式人生 > >使用Docker部署應用程式

使用Docker部署應用程式

準備:用到兩臺伺服器,一臺(192.168.160.134)用做開發者PC,一臺(192.168.160.135)用做伺服器

一、在開發者PC安裝git,並建立倉庫

安裝

[[email protected] ~]# yum install git

建立倉庫

[[email protected] ~]# git init exampleapp

轉到倉庫目錄,然後設定作者的電子郵件和名稱

[[email protected] ~]# cd exampleapp/
[[email protected] exampleapp]# git config --global usr.email 
[email protected]
[[email protected] exampleapp]# git config --global usr.name "mai ye ping"
二、開發者PC使用Node.js編寫簡單Web伺服器
[[email protected] ~]# vim exampleapp/app.js 

 var express = require('express');
var app = express();
app.get(['/','/index.html'],function (req,res){
 res.send('Hello Docker');
 });
app.listen(80);
[[email protected] ~]# vim exampleapp/package.json 

  1 {
  2   "name":"exampleapp",
  3   "description":"Hello Docker",
  4   "version":"0.0.1",
  5   "dependencies":{
  6     "express":"4.4.x"
  7   }
  8 }         
三、將檔案提交到開發者PC的exampleapp倉庫(其實我這一步不是很明白,不是在exampleapp目錄下建立的檔案嗎,為什麼還要提交到那個倉庫?)
[
[email protected]
exampleapp]# git add app.js package.json [[email protected] exampleapp]# git commit -m "add source"
四、編寫Dockerfile檔案
[[email protected] exampleapp]# vim Dockerfile 
  1 FROM centos
  2 
  3 RUN yum install -y nodejs npm
  4 
  5 ADD app.js /var/www/app.js
  6 ADD package.json /var/www/package.json
  7 
  8 WORKDIR /var/www
  9 RUN npm install
 10 
 11 CMD node app.js                        

ADD :將app.js和package.json複製到映象的/var/www/目錄
RUN npm install:將安裝package.json中設定的Node,js模組
CMD node app.js 設定用於在容器啟動時利用nodejs執行app.js
nodejs是javascript的執行環境。
將Dockerfile檔案提交到開發者的exampleapp倉庫

[[email protected] exampleapp]# git add Dockerfile 
[[email protected] exampleapp]# git commit -m "add Dockerfiile"
五、在開發者PC中生成SSH金鑰
[[email protected] exampleapp]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:WnbSLwOy+EpY6oMSqKgVJbOVdL5fMvIpFIgyLZY4pdA [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|... . .          |
|o+Eo =           |
|Bo= = o          |
|.= *   o .       |
|. o . = S +      |
|o  = o X O .     |
|oo+ o + + o .    |
|=o.. . .   o     |
|+ .....          |
+----[SHA256]-----+

在伺服器端

一、在伺服器中安裝Docker
[[email protected] ~]# yum  install docker-io
[[email protected] ~]# systemctl start docker
二、在伺服器中安裝SSH金鑰

在伺服器端安裝前面生成的SSH金鑰,以便開發者PC訪問伺服器時不必使用密碼

[[email protected] ~]# mkdir .ssh/
[[email protected] ~]# chmod 700 .ssh/
[[email protected] ~]# mkdir .ssh/authorrized_keys 

將開發者PC端的建立的id_rsa.pub檔案複製到伺服器端的.ssh/authorrized_keys 中,然後修改許可權

[[email protected] ~]# scp .ssh/id_rsa.pub [email protected]:.ssh/authorrized_keys 
[email protected]'s password: 
id_rsa.pub                    100%  399   328.7KB/s   00:00    

在伺服器端檢視
[[email protected] ~]# ls .ssh/
authorrized_keys  id_rsa  id_rsa.pub
[[email protected] ~]# chmod +x .ssh/authorrized_keys 
二、在伺服器端安裝Git Hook
[[email protected] ~]# vim exampleapp/.git/hooks/post-receive 

  1 #!/bin/bash
  2 
  3 APP_NAME=exampleapp(設定當前應用程式的名稱,與倉庫名稱一致)
  4 APP_DIR=$HOME/$APP_NAME(設定檢視目錄)
  5 REVISTION=$(expr substr $(git rev-parse --verify HEAD) 1 7)
  6 
  7 GIT_WORK_TREE=$APP_DIR git checkout -f
  8 
  9 cd $APP_DIR
 10 docker build --tag $APP_NAME:$REVISION .
 11 docker stop $APP_NAME
 12 docker rm $APP_NAME
 13 docker run -d --name $APP_NAME -p 80:80 $APP_NAME:$REVISION  

REVISTION=$(expr substr $(git rev-parse --verify HEAD) 1 7)
git rev-parse --verify HEAD:這句命令的作用可以參考這篇博文:http://blog.sina.com.cn/s/blog_9ca06dcc0102vrvp.html(簡單來說就是讓git知道你在哪)
expr substr:expr命令是一款表示式計算工具,使用它完成表示式的求值操作

[[email protected] ~]# expr --help
....
 substr STRING POS LENGTH   substring of STRING, POS counted from 1
  ....
  所以expr substr   $(git rev-parse --verify HEAD) (STRING)  1(POP) 7(LENGTH)
  
[[email protected] exampleapp]# expr substr $(git rev-parse --verify HEAD) 1 7
061fe9c

GIT_WORK_TREE=$APP_DIR git checkout -f
git checkout -f:用於將推送的原始碼儲存到倉庫目錄,必須設定GIT_WORK_TREE變數

三、在開發者PC中推送原始碼
[[email protected] exampleapp]# git remote add original [email protected]:exampleapp
[[email protected] exampleapp]# git push original master
四、測試

在web瀏覽器中輸入伺服器的IP地址,據說會有下圖效果。
在這裡插入圖片描述

相關推薦

使用Docker部署應用程式

準備:用到兩臺伺服器,一臺(192.168.160.134)用做開發者PC,一臺(192.168.160.135)用做伺服器 一、在開發者PC安裝git,並建立倉庫 安裝 [[email protected] ~]# yum install git

docker 部署應用

包括 ima image 解壓 容器 -perm 添加主機 tcp linu Docker 部署應用 所需環境   Linux系統:centos7 (推薦7.4)   Docker環境:V1.13.1   鏡像:應用鏡像包 部署過程:   1、 docker環境搭建  

docker管理應用程式資料、容器網路

管理應用程式資料 Docker提供三種方式將資料從宿主機掛載到容器中: • volumes:Docker管理宿主機檔案系統的一部分(/var/lib/docker/volumes)。儲存資料的最佳方式。 • bind mounts:將宿主機上的任意位置的檔案或者目錄掛載到容器中。 • tmp

通過實際部署應用程式來學習Web 3.0:動手實踐(IPFS +以太坊)

“分散式網路”或“Web 3.0”現因其將給當今行業帶來的革命性變革已儼然成為流行語。但是我們中有多少人真正瞭解Web 3.0呢? 在本文中,我會對Web 3.0的顯著特點進行介紹。在獲得對Web 3.0的基本瞭解之後,我們將一起在IPFS上部署應用程式。該應用程式具有一份Solidit

docker部署應用訪問不了

部署了應用,但是訪問不了             解決思路:                &nbs

Docker 部署應用、jar 工程 docker 方式部署

1. 把要部署的工程打成一個jar包。(我的工程叫 gentle ) 2. 把 jar 包上傳到 伺服器確定目錄下。    我是用 rz 命令直接選擇 jar 上傳到我存放 jar 的目錄:/root/jiangyu/dockerfiles/jar 3.編寫

雲主機-生產環境下離線安裝Docker部署應用

離線安裝Docker、配置Docker以及使用Docker 根據核心版本,下載Docker離線安裝包 安裝上序下載的rpm包:rpm -ivh *.rpm 安裝完成之後,檢測是否安裝成功,

nginx負載均衡+docker部署應用

Docker已經出來好長時間了,一直沒有時間研究,正好最近有個專案部署在一臺記憶體和CPU都超誇張的機器上,而專案因併發量增加,後面肯定也需要擴充套件了。因為這臺伺服器記憶體和CPU都足夠大,部署一個專案實在太浪費了,於是想到用docker部署方式做橫向擴充套件。 首先想到

基於負載均衡部署應用程式

   由於網路的資料流量多集中在中心伺服器一端, 為了保證高可用性,需要考慮一些負載均衡的措施。    在前期實施的一個專案上,我們採用了硬體方式            通過LSANT(Load Sharing Network Address Transfer)將多臺

Docker容器學習梳理--應用程式容器環境部署

轉:https://www.cnblogs.com/kevingrace/p/6425424.html 關於國內Docker映象,可以參考:Docker容器學習梳理--基礎知識(2) 的Docker映象使用。 如果我們需要在Docker環境下部署tomcat、redis、mysql

Docker on Windows: 部署你的第一個應用程式

Docker 執行在Linux上,可能你已經瞭解很多,但執行在windows上呢,本文來試一下部署一個靜態檔案在IIS上,目的不在於練習docker, 而在於讓你瞭解windows的一些映象 前提條件 需要在windows上安裝docker,然後切換到windows 容器

如果在docker部署tomcat,並且部署java應用程式

1、先說如何在docker中部署tomcat     第一步:root使用者登入在系統根目錄下建立資料夾tomcat7,命令如:mkdir tomcat7,並且切換到該目錄下:cd tomcat7;     第二步:建立Dockerfile,命令如:touch Docker

Docker on Windows: 建立並部署一個基於.net framework的mvc應用程式

首先使用Visual studio建立一個傳統的asp.net  建立完成之後,結構如下: ,它是基於http.sys的web伺服器的,接下來直接加一個dockerfile打包成一個映象。 FROM microsoft/aspnet workdir "c:\i

將Java EE應用程式部署Docker Swarm叢集

​ 什麼是Docker Swarm? 簡單來說,Swarm Manager是一個預先設定好的Docker主機,並且是所有管理的唯一一點。其他Docker主機被定義為節點,並使用TCP與Manager進行通訊。預設情況下,Swarm會使用託管的 基於

利用Docker部署SpringBoot應用程式

我們已經安裝完成了Java環境,那麼本篇就開始怎麼部署一個SpringBoot專案到Docker中,Docker實現Spri

【Azure DevOps系列】Azure DevOps使用Docker將.NET應用程式部署在雲伺服器

## Docker持續整合 本章我們要實現的是通過我們往程式碼倉庫push程式碼後,我們將每次的push進行一次docker自動化打包釋出到docker hub中,釋出到之後我將進行部署環節,我們將通過ssh方式將我們的.NET應用程式pull並run到我們的雲伺服器上。 Dockerfile 如下所示:

關於docker部署javaweb應用的問題

ava target docker部署 問題 是什麽 link javaweb 什麽 docker 我做了兩個鏡像,一個mysql,一個tomcat。建完mysql容器之後,在建tomcat的時候用--link把他們鏈接起來了進tomcat的容器裏面 /etc/hosts

使用Docker部署ASP.NET Core應用程序實踐

4.0 cor run .com cnblogs pda word 本地配置 問題 前言 最近把很火的Docker給看了,於是就磨拳擦掌要去實踐一下。於是就拿之前一個aps.net core的項目(已被停止)去練手。該項目之前在ubuntu14.04上確保可以正常運行,所以

使用Docker部署javaWeb應用

分享 search zhang 部署 bubuko docke 技術分享 target 查看 1. 安裝Dcoker http://www.cnblogs.com/zhangqian27/p/9089815.html 2. 查看鏡像 $ docker ima

Docker Overlay 應用部署

Docker Overlay 部署條件 要想使用Docker原生Overlay網路,需要滿足以下任意條件:   1、Docker執行在Swarm模式   2、使用鍵值儲存的Docker主機叢集 本次部署使用鍵值儲存的Docker主機叢集,需要滿足以下條件: 1. 叢集中主機連