使用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. 叢集中主機連