国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Docker的鏡像制作與整套項目一鍵打包部署的實(shí)現

發(fā)布時(shí)間:2021-08-15 18:36 來(lái)源: 閱讀:0 作者:臨淵慕魚(yú)不如退而結網(wǎng) 欄目: 服務(wù)器 歡迎投稿:712375056

Dockerfile常用指令介紹

利用Dockerfile編寫(xiě)簡(jiǎn)單的nginxWeb鏡像

#首先開(kāi)啟ipv4轉發(fā)
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf 
sysctl -p
net.ipv4.ip_forward = 1

#創(chuàng  )建nginx的鏡像目錄
mkdir -p dockerfile/lib/centos/nginx
cd dockerfile/lib/centos/nginx

#準備Dockerfile文件
vim Dockerfile
FROM centos:7    #構建的新鏡像是基于哪個(gè)鏡像(構建的nginx是基于centos7構建的,依賴(lài)centos7的系統支持,如果沒(méi)有鏡像自動(dòng)下載)
MAINTAINER wk    #鏡像制作人   
RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel   #構建鏡像時(shí)運行shell命令,yum安裝nginx的依賴(lài)包
ADD nginx-1.12.1.tar.gz /tmp     #拷貝文件或目錄到鏡像下,遇到壓縮文件自動(dòng)解壓縮
RUN cd /tmp/nginx-1.12.1 && \     #運行shell命令編譯安裝nginx,make -j 給與2個(gè)線(xiàn)程編譯 
  ./configure --prefix=/usr/local/nginx && \
  make -j 2 && \
  make install
RUN rm -rf /tmp/nginx-1.12.1* && yum clean all      #刪除nginx源碼包和清空yum緩存,使容器最輕量化
COPY nginx.conf /usr/local/nginx/conf          #拷貝文件或目錄到鏡像 
WORKDIR /usr/local/nginx                   #為RUN,CMD,ENTRYPOINT,COPY和ADD設置工作目錄(指定進(jìn)入容器中默認被切換的目錄)。
EXPOSE 80                            #聲明容器的端口號
CMD ["./sbin/nginx", "-g", "daemon off;"]         #運行容器時(shí)執行的shell命令 -g daemon off 不以守護進(jìn)程的方式開(kāi)啟nginx,即不以后臺運行的方式開(kāi)啟nginx
#將事先準備好的nginx-1.12.1.tar.gz和nginx.conf配置文件拷貝到當前目錄下
ls
Dockerfile nginx-1.12.1.tar.gz nginx.conf

#build基于nginx的docker鏡像
docker build -t nginx:1 .
#nginx主配置文件cat conf/nginx.conf
user root; 
worker_processes auto; 

error_log logs/error.log info;

pid    logs/nginx.pid; 


events {
  use epoll; 
}

http {

  include    mime.types;
  default_type application/octet-stream;

  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';

  access_log logs/access.log main;
  sendfile    on;
  keepalive_timeout 65;

  server {
    listen 80;
    server_name localhost;
    root html;
    index index.html index.php;

    location ~ \.php$ {
      root html;
      fastcgi_pass lnmp_php:9000;    #lnmp_ph為php容器主機名,對應的就是php的IP地址 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      include fastcgi_params;
    }
  }
}

構建PHP網(wǎng)站平臺鏡像

#創(chuàng  )建php的鏡像目錄
mkdir -p /root/dockerfile/lib/centos/php
cd /root/dockerfile/lib/centos/php

#準備Dockerfile文件
vim Dockerfile 
FROM centos:7         #新鏡像基于centos7鏡像
MAINTAINER wk          #新鏡像制作人
RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel      #運行shell安裝依賴(lài)
ADD php-5.6.31.tar.gz /tmp/    #將安裝包考到 /tmp下并自動(dòng)解壓縮

RUN cd /tmp/php-5.6.31 && \        #編譯安裝php,復制php啟動(dòng)文件.并修改啟動(dòng)文件的配置
  ./configure --prefix=/usr/local/php \
  --with-config-file-path=/usr/local/php/etc \
  --with-mysql --with-mysqli \
  --with-openssl --with-zlib --with-curl --with-gd \
  --with-jpeg-dir --with-png-dir --with-iconv \
  --enable-fpm --enable-zip --enable-mbstring && \
  make -j 4 && \
  make install && \
  cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && \
  sed -i "s/127.0.0.1/0.0.0.0/" /usr/local/php/etc/php-fpm.conf && \
  sed -i "21a \daemonize = no" /usr/local/php/etc/php-fpm.conf
COPY php.ini /usr/local/php/etc        #將php主配置文件拷貝進(jìn)去

RUN rm -rf /tmp/php-5.6.31* && yum clean all  #刪除不用的文件,清空yum緩存使容器最輕量化

WORKDIR /usr/local/php        #進(jìn)入容器的位置,也是php程序的位置
EXPOSE 9000               #開(kāi)啟端口9000
CMD ["./sbin/php-fpm", "-c", "/usr/local/php/etc/php-fpm.conf"]    #開(kāi)啟php -c 指定主配置文件

#將事先準備好的php.ini文件及php-5.6.31.tar.gz拷貝到當前目錄下
ls
Dockerfile php-5.6.31.tar.gz php.ini

#build基于php的docker鏡像
docker build -t php:1 .

創(chuàng )建nginx-php網(wǎng)絡(luò )環(huán)境,并啟動(dòng)容器

#創(chuàng  )建一個(gè)叫做lnmp的網(wǎng)絡(luò )
docker network create lnmp
dad428646d8f8278f36b80b3b960493aee8be1960bb1f505bfeebc97022b6385

docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
0604a9338e1b    bridge       bridge       local
b68e9da0b1e6    host        host        local
dad428646d8f    lnmp        bridge       local
cf4b2d0b4394    none        null        local

#創(chuàng  )建nginx-php網(wǎng)頁(yè)掛載目錄
mkdir -p /www

#啟動(dòng)php容器
docker run -dit --name lnmp-php --net lnmp --mount type=bind,src=/www,dst=/usr/local/nginx/html php:1
5b49fc160f9e42364238a937149bbb475036b8a28feddf0fe05c1e70b414a151

#啟動(dòng)nginx容器
docker run -dit --name lnmp-nginx --net lnmp -p 8888:80 --mount type=bind,src=/www,dst=/usr/local/nginx/html nginx:1
7ce4d14cf756859e814186090a12b770916f150ed2a5fab2f0dc6ba8c347aab8

docker ps -a
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS         NAMES
7ce4d14cf756    nginx:1       "./sbin/nginx -g 'da…"  16 seconds ago   Up 15 seconds    0.0.0.0:8888->80/tcp  lnmp-nginx
5b49fc160f9e    php:1        "./sbin/php-fpm -c /…"  6 minutes ago    Up 6 minutes    9000/tcp        lnmp-php

#創(chuàng  )建測試頁(yè)面php.info
echo "<?php phpinfo();?>" > /www/index.php

通過(guò)瀏覽器進(jìn)行訪(fǎng)問(wèn)測試

構建JAVA網(wǎng)站環(huán)境鏡像

#創(chuàng  )建java鏡像構建存儲目錄
mkdir -p dockerfile/lib/centos/tomcat
cd dockerfile/lib/centos/tomcat

#將所需軟件包拷貝到當前目錄下
ls
apache-tomcat-8.0.46.tar.gz Dockerfile jdk-8u45-linux-x64.tar.gz server.xml

#籌備Dockerfile
vim Dockerfile
FROM centos:7      
MAINTAINER wk

ADD jdk-8u45-linux-x64.tar.gz /usr/local    #創(chuàng  )建javaJDK環(huán)境
ENV JAVA_HOME /usr/local/jdk1.8.0_45       #強行生成一個(gè)環(huán)境變量

ADD apache-tomcat-8.0.46.tar.gz /usr/local    #解壓tomcat
COPY server.xml /usr/local/apache-tomcat-8.0.46/conf   #復制配置文件

RUN rm -f /usr/local/*.tar.gz            #刪除安裝包 容器輕量化

WORKDIR /usr/local/apache-tomcat-8.0.46      #工作目錄 進(jìn)入容器所在的目錄
EXPOSE 8080                       #映射端口
ENTRYPOINT ["./bin/catalina.sh", "run"]      #用catalina。sh run前臺啟動(dòng)tomcat

#build基于tomcat的鏡像
docker build -t tomcat:1 .

#創(chuàng  )建網(wǎng)頁(yè)掛載目錄
mkdir -p /app

#啟動(dòng)tomcat的容器進(jìn)程
docker run -dit --name=tomcat -p 8080:8080 --network lnmp --mount type=bind,src=/app/,dst=/usr/local/apache-tomcat-8.0.46/webapps tomcat:1

docker ps -a
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
15eca19688ca    tomcat:1      "./bin/catalina.sh r…"  17 seconds ago   Up 16 seconds    0.0.0.0:8080->8080/tcp  tomcat
7ce4d14cf756    nginx:1       "./sbin/nginx -g 'da…"  2 hours ago     Up About an hour  0.0.0.0:8888->80/tcp   lnmp-nginx
5b49fc160f9e    php:1        "./sbin/php-fpm -c /…"  2 hours ago     Up About an hour  9000/tcp         lnmp_php

#創(chuàng  )建網(wǎng)站測試頁(yè)
mkdir /app/ROOT
vim /app/ROOT/index.html 
ddddddddddddddddddd

整套項目一鍵打包部署

Docker Compose用法

Compose是一個(gè)定義和管理多容器的工具,使用Python語(yǔ)言編寫(xiě)。使用Compose配置文件描述多個(gè)容器應用的架構,比如使用什么鏡像,數據卷,網(wǎng)絡(luò ),映射端口等;然后一條命令管理所有服務(wù),比如啟動(dòng),停止,重啟等

安裝

unzip docker-compose-linux-x86_64.zip 
Archive: docker-compose-linux-x86_64.zip
 inflating: docker-compose     

ll docker-compose
-rw-r--r-- 1 root root 8858496 Aug 31 2017 docker-compose

chmod +x docker-compose

mv docker-compose /usr/bin/

YAML文件格式及編寫(xiě)注意事項

YAML是一種標記語(yǔ)言很直觀(guān)的數據序列化格式,可讀性高。類(lèi)似于XML數據描述語(yǔ)言,語(yǔ)法比XML簡(jiǎn)單的很多

YAML數據結構通過(guò)縮進(jìn)來(lái)表示,連續的項目通過(guò)減號來(lái)表示,鍵值對用冒號分隔,數組用中括號括起來(lái),hash用花括號括起來(lái)

YAML文件格式注意事項:

  • 不支持制表符tab鍵縮進(jìn),需要使用空格縮進(jìn)
  • 通常開(kāi)頭縮進(jìn)2個(gè)空格
  • 字符后縮進(jìn)1個(gè)空格,如冒號,逗號,橫桿
  • 用井號注釋
  • 如果包含特殊字符用單引號引起來(lái)
  • 布爾值(true,false,yes,no,on,off)必須用引號括起來(lái),這樣分析器會(huì )將他們解釋為字符串。

配置文件常用字段

常用命令

一鍵部署LNMP網(wǎng)站平臺

#查看compose_lnmp包
tree /root/compose_lnmp/
/root/compose_lnmp/
├── docker-compose.yml       #docker-compose啟動(dòng)接口文件
├── mysql
│   ├── conf
│   │   └── my.cnf         #mysql配置文件
│   └── data            #待掛載mysql數據目錄
├── nginx
│   ├── Dockerfile         #自定義nginx的Docker鏡像配置文件    
│   ├── nginx-1.12.1.tar.gz    #nginx源碼包
│   └── nginx.conf         #nginx配置文件
├── php
│   ├── Dockerfile         #自定義php的docker鏡像文件
│   ├── php-5.6.31.tar.gz     #php源碼包
│   └── php.ini          #php配置文件
└── wwwroot            #網(wǎng)頁(yè)目錄
  └── index.php         #默認網(wǎng)頁(yè)文件
vim docker-compose.yml     #docker-compose啟動(dòng)接口文件必須是以.yml 結尾 他和ansbile都是python寫(xiě)的
version: '3'           #容器版本為3
services:             #容器服務(wù)有以下 
 nginx:              #nginx的容器
  hostname: nginx       #容器主機名為nginx
  build:           #指定dockerfile文件的位置
   context: ./nginx      #dockerfile文件位置在當前路徑下的nginx目錄里
   dockerfile: Dockerfile  #dockerfile文件名:Dockerfile
  ports:             #指定映射端口主機81映射到80
   - 81:80         
  networks:         #指定容器網(wǎng)卡在lnmp網(wǎng)橋
   - lnmp
  volumes:          #掛載當前目錄下的./wwwroot到容器nginx的網(wǎng)頁(yè)目錄
   - ./wwwroot:/usr/local/nginx/html

 php:              #和nginx類(lèi)似
  hostname: php
  build:
   context: ./php
   dockerfile: Dockerfile
  networks:
   - lnmp
  volumes:
   - ./wwwroot:/usr/local/nginx/html

 mysql:
  hostname: mysql
  image: mysql:5.6      #下載鏡像mysql5.6版本
  ports:           
   - 3306:3306
  networks:
   - lnmp
  volumes:            #掛載mysql主配置文件和數據文件
   - ./mysql/conf:/etc/mysql/conf.d
   - ./mysql/data:/var/lib/mysql 
  command: --character-set-server=utf8     #執行命令,覆蓋默認命令 
  environment:              #添加環(huán)境變量
   MYSQL_ROOT_PASSWORD: 123456
   MYSQL_DATABASE: wordpress
   MYSQL_USER: user
   MYSQL_PASSWORD: user123

networks:     #加入網(wǎng)絡(luò )lnmp,引用頂級networks下條目
 lnmp:
#一鍵部署LNMP
docker-compose -f docker-compose.yml up    #-f指定當前目錄下的docker-compose為啟動(dòng)文件,up創(chuàng  )建和啟動(dòng)容器
#一鍵查看所有部署的容器進(jìn)程
docker-compose -f docker-compose.yml ps
    Name           Command        State      Ports     
-------------------------------------------------------------------------------------
composelnmp_mysql_1  docker-entrypoint.sh --cha ...  Up   0.0.0.0:3306->3306/tcp 
composelnmp_nginx_1  ./sbin/nginx -g daemon off;   Up   0.0.0.0:81->80/tcp   
composelnmp_php_1   ./sbin/php-fpm -c /usr/loc ...  Up   9000/tcp    

#一鍵終止所有部署的容器進(jìn)程
docker-compose -f docker-compose.yml stop
Stopping composelnmp_nginx_1 ... done
Stopping composelnmp_php_1  ... done
Stopping composelnmp_mysql_1 ... done#一鍵啟動(dòng)容器,在后臺運行docker-compose -f docker-compose.yml start
#一鍵清理所有部署的容器進(jìn)程 docker-compose -f docker-compose.yml down

一鍵部署Nginx反向代理Tomcat集群實(shí)戰

#查看compose_nginx_tomcat包
[root@docker ~]# tree compose_nginx_tomcat/
compose_nginx_tomcat/
├── docker-compose.yml
├── mysql
│  ├── conf
│  │  └── my.cnf #mysql的配置文件
│  └── data    #待掛載mysql數據目錄
├── nginx
│  ├── Dockerfile   #自定義鏡像配置文件
│  ├── nginx-1.12.1.tar.gz #源碼包
│  └── nginx.conf     #nginx配置文件
├── tomcat
│  ├── apache-tomcat-8.0.46.tar.gz #源碼包
│  ├── Dockerfile   #自定義鏡像配置文件
│  └── server.xml   #tomcat配置文件
└── webapps     
  └── ROOT
    └── index.html #網(wǎng)頁(yè)測試文件
#查看docker-compose的啟動(dòng)接口文件
 cat compose_nginx_tomcat/docker-compose.yml 
version: '3'
services:
 nginx:
  hostname: nginx
  build:
   context: ./nginx
   dockerfile: Dockerfile
  ports:
   - 82:80
  networks:
   - lnmt
  volumes:
   - ./webapps:/opt/webapps
 tomcat01:
  hostname: tomcat01
  build: ./tomcat
  networks:
   - lnmt
  volumes:
   - /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45
   - ./webapps:/usr/local/apache-tomcat-8.0.46/webapps
 tomcat02:
  hostname: tomcat02
  build: ./tomcat
  networks:
   - lnmt
  volumes:
   - /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45  #docker宿主機的java環(huán)境被掛載了!
   - ./webapps:/usr/local/apache-tomcat-8.0.46/webapps  #掛載網(wǎng)頁(yè)目錄
 mysql:
  hostname: mysql
  image: mysql:5.6
  ports:
   - 3307:3306
  networks:
   - lnmt
  volumes:
   - ./mysql/conf:/etc/mysql/conf.d
   - ./mysql/data:/var/lib/mysql
  environment:
   MYSQL_ROOT_PASSWORD: 123456
   MYSQL_DATABASE: db
   MYSQL_USER: user
   MYSQL_PASSWORD: user123
networks:
 lnmt:

每個(gè)容器安裝JAVA環(huán)境,會(huì )使容器過(guò)大,所以用本地java環(huán)境掛在到tomcat容器內,這樣節省空間

#由于tomcat容器進(jìn)程需要掛載docker宿主機本地的java環(huán)境
#所以在docker宿主機本地安裝jdk-8u45-linux-x64.tar.gz
tar xf jdk-8u45-linux-x64.tar.gz -C /usr/local

#一鍵部署ngxin+tomcat反向代理集群
docker-compose -f docker-compose.yml up
nginx反向代理配置文件
user root; 
worker_processes auto; 

error_log logs/error.log info;

pid    logs/nginx.pid; 


events {
  use epoll; 
}

http {

  include    mime.types;
  default_type application/octet-stream;

  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';

  access_log logs/access.log main;
  sendfile    on;
  keepalive_timeout 65;
  
  upstream www.example.com {
    #ip_hash;
    server tomcat01:8080;   #在compose的接口文件里定義的hostname主機名可直接解析為IP
    server tomcat02:8080;
  }

  server {
    listen 80;
    server_name localhost;
  
  location / {
    proxy_pass http://www.example.com;
  }

    location ~ \.(html|css|js|jpg|png|gif)$ {
      root /opt/webapps/ROOT;
    }
  }
}

到此這篇關(guān)于Docker的鏡像制作與整套項目一鍵打包部署的實(shí)現的文章就介紹到這了,更多相關(guān)Docker 鏡像制作與打包部署內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

蜜臀AV 国内精品久久久| 成AⅤ人免费观看中文字幕| 玩弄人妻少妇精品视频| 性国产牲交XXXXX视频| 东京热无码人妻系列综合网站| 成人网站免费观看入口|