最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Dockerfile實現(xiàn)容器內(nèi)部服務(wù)隨容器自啟動的方法

 更新時間:2022年06月09日 09:50:44   作者:MasonYyp  
這篇文章主要介紹了使用Dockerfile實現(xiàn)容器內(nèi)部服務(wù)隨容器自啟動,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

創(chuàng)建搭載flask的python容器,實現(xiàn)容器內(nèi)服務(wù)隨容器自啟動,需要使用shell腳本Dockerfile中的CMD

1 Docker下載python

# 下載python
sudo docker pull python:3.8.2
# 創(chuàng)建python容器
sudo docker run -itd --name mypython python:3.8.2
# 進入mypython
sudo docker exec -it mypython /bin/bash
# 安裝flask和gunicorn
pip install flask
pip install gunicorn

2 搭建flask服務(wù)

2.1 創(chuàng)建flask腳本

在宿主機上創(chuàng)建flask腳本文件

touch app.py

app.py的內(nèi)容如下

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World"

將main.py復(fù)制到mypython容器中的/home/myflask目錄下

sudo docker cp app.py mypython:/home/myflask

2.2 創(chuàng)建gunicorn啟動腳本

在宿主機下創(chuàng)建啟動文件

touch start_flask.sh

在start_flask.sh文件中添加

#!/bin/bash
#
# Program:
#       mypython flask
# History
#       2022-06-08 mason
#
# 進入目錄
cd /home/myflask

# 執(zhí)行程序
gunicorn -w 4 -b 0.0.0.0:5000 app:app

將start_flask.sh復(fù)制到mypython容器中的/home/myflask目錄下

sudo docker cp start_flask.sh mypython:/home/myflask

3 制作鏡像

3.1 將mypython容器制作成鏡像

# docker commit -m "說明" -a "作者" 容器名 鏡像名:版本號
sudo docker commit -m "my python " -a "mason" mypython mypython:v1.0

# 查看鏡像列表
sudo docker images

# 返回結(jié)果
mypython                             v1.0                           875738200451   9 seconds ago   945MB

3.2 Dockerfile制作

(1)創(chuàng)建mypython-v1.0-dockerfile目錄

mkdir mypython-v1.0-dockerfile

(2)在mypython-v1.0-dockerfile創(chuàng)建Dockerfile

# 進入目錄
cd mypython-v1.0-dockerfile
# 創(chuàng)建文件
touch Dockerfile

(3)Dockerfile的內(nèi)容如下

注意:run是在 docker build構(gòu)建鏡像時, 會執(zhí)行的命令;cmd是在 docker run啟動容器時, 會執(zhí)行的命令

# 設(shè)置鏡像
FROM mypython:v1.0
# 設(shè)置作者
MAINTAINER mason
# 開放5000端口
EXPOSE 5000
# 執(zhí)行命令
CMD ["sh", "/home/myflask/start_flask.sh"]

(4)執(zhí)行Dockerfile

sudo docker build -t mypython:v2.0 mypython-v1.0-dockerfile/

3.3 使用自定義的鏡像創(chuàng)建容器

# 創(chuàng)建容器
sudo docker run -itd --name mytest -p 5000:5000 mypython:v2.0

# 查看mytest的日志信息 
sudo docker logs -f mytest

4 在聯(lián)網(wǎng)的情況下,直接使用Dockerfile制作鏡像

4.1 設(shè)置基本環(huán)境

# 創(chuàng)建目錄
sudo mkdir mypython-1.0

# 進入mypython-1.0
cd mypython-1.0

# 創(chuàng)建myflask目錄
sudo mkdir myflask

4.2 創(chuàng)建腳本

進入myflask目錄,創(chuàng)建app.py文件,文件內(nèi)容如下。

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello World"

進入myflask目錄,創(chuàng)建start_flask.sh文件,文件內(nèi)容如下。

#!/bin/bash
#
# Program:
#       mypython flask
# History
#       2022-06-08 mason
#
# 進入目錄
cd /home/myflask

# 執(zhí)行程序
gunicorn -w 4 -b 0.0.0.0:5000 app:app

4.3 創(chuàng)建Dockerfile文件

進入mypython-1.0目錄,注意不是myflask目錄,創(chuàng)建Dockerfile文件,文件內(nèi)容如下:

# 設(shè)置鏡像
FROM python:3.8.2
# 作者
MAINTAINER Maon
# 在容器中安裝相關(guān)的環(huán)境
RUN pip install flask
RUN pip install gunicorn
# 設(shè)置工作目錄
WORKDIR /home
# 復(fù)制文件,注意myflask目錄要與Dockerfile在同一個目錄
# COPY會將myflask目錄下的文件,全部拷貝到/home/myflask目錄下
COPY myflask /home/myflask
# 開放端口5000
EXPOSE 5000
# 執(zhí)行命令
CMD ["sh", "/home/myflask/start_flask.sh"]

執(zhí)行文件

# 進入mypython-1.0目錄
cd mypython-1.0

# 執(zhí)行文件,注意后面的"."
sudo docker build -t mypython:1.0 .

# 執(zhí)行過程如下
Sending build context to Docker daemon  4.608kB
Step 1/8 : FROM python:3.8.2
 ---> 4f7cd4269fa9
Step 2/8 : MAINTAINER Maon
 ---> Running in 01bd71948685
Removing intermediate container 01bd71948685
 ---> ddae7ce9a68d
Step 3/8 : RUN pip install flask
 ---> Running in 58f3fcfe573c
Collecting flask
  Downloading Flask-2.1.2-py3-none-any.whl (95 kB)
Collecting Jinja2>=3.0
  Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB)
Collecting importlib-metadata>=3.6.0; python_version < "3.10"
  Downloading importlib_metadata-4.11.4-py3-none-any.whl (18 kB)
Collecting click>=8.0
  Downloading click-8.1.3-py3-none-any.whl (96 kB)
Collecting itsdangerous>=2.0
  Downloading itsdangerous-2.1.2-py3-none-any.whl (15 kB)
Collecting Werkzeug>=2.0
  Downloading Werkzeug-2.1.2-py3-none-any.whl (224 kB)
Collecting MarkupSafe>=2.0
  Downloading MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25 kB)
Collecting zipp>=0.5
  Downloading zipp-3.8.0-py3-none-any.whl (5.4 kB)
Installing collected packages: MarkupSafe, Jinja2, zipp, importlib-metadata, click, itsdangerous, Werkzeug, flask
Successfully installed Jinja2-3.1.2 MarkupSafe-2.1.1 Werkzeug-2.1.2 click-8.1.3 flask-2.1.2 importlib-metadata-4.11.4 itsdangerous-2.1.2 zipp-3.8.0
WARNING: You are using pip version 20.1; however, version 22.1.2 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
Removing intermediate container 58f3fcfe573c
 ---> a22c9de6e3d5
Step 4/8 : RUN pip install gunicorn
 ---> Running in 5b635d18e39b
Collecting gunicorn
  Downloading gunicorn-20.1.0-py3-none-any.whl (79 kB)
Requirement already satisfied: setuptools>=3.0 in /usr/local/lib/python3.8/site-packages (from gunicorn) (46.1.3)
Installing collected packages: gunicorn
Successfully installed gunicorn-20.1.0
WARNING: You are using pip version 20.1; however, version 22.1.2 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
Removing intermediate container 5b635d18e39b
 ---> 8afabe6c3a62
Step 5/8 : WORKDIR /home
 ---> Running in 45040c10af7c
Removing intermediate container 45040c10af7c
 ---> 15ef04626c92
Step 6/8 : COPY myflask /home
 ---> b6736b08b1e3
Step 7/8 : EXPOSE 5000
 ---> Running in 0835fe7f5809
Removing intermediate container 0835fe7f5809
 ---> ebd8bd33c8dc
Step 8/8 : CMD ["sh", "/home/myflask/start_flask.sh"]
 ---> Running in e1f867903175
Removing intermediate container e1f867903175
 ---> 8c1b7d276dbb
Successfully built 8c1b7d276dbb
Successfully tagged mypython:1.0

4.4 使用鏡像

# 創(chuàng)建容器
sudo docker run -itd --name mytest1.0 -p 5000:5000 mypython:1.0
# 查看日志
sudo docker logs -f mytest1.0

容器自動重啟后,查看結(jié)果

在這里插入圖片描述

到此這篇關(guān)于使用Dockerfile實現(xiàn)容器內(nèi)部服務(wù)隨容器自啟動的文章就介紹到這了,更多相關(guān)Dockerfile服務(wù)自啟動內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker中安裝quagga詳細介紹

    docker中安裝quagga詳細介紹

    這篇文章主要介紹了docker中安裝quagga詳細介紹的相關(guān)資料,這里提供了詳細的步驟,及注意事項,需要的朋友可以參考下
    2016-10-10
  • Docker?compose一鍵安裝mirai搭建QQ機器人最快操作方法

    Docker?compose一鍵安裝mirai搭建QQ機器人最快操作方法

    這篇文章主要介紹了Docker?compose一鍵安裝mirai,搭建QQ機器人最快方法,詳細介紹了mirai基本操作,結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • Docker安裝node-red、導(dǎo)入節(jié)點、部署查看的步驟詳解

    Docker安裝node-red、導(dǎo)入節(jié)點、部署查看的步驟詳解

    Node-RED設(shè)計使用的場景是IoT,但是作為一個流編排引擎,顯然它能做的事情更多,比如使用容器化的方式進行構(gòu)建、打包、部署等操作也是可行的,這篇文章繼續(xù)介紹Docker安裝node-red、導(dǎo)入節(jié)點、部署查看的相關(guān)知識,感興趣的朋友一起看看吧
    2022-01-01
  • Docker安裝部署neo4j的實戰(zhàn)過程

    Docker安裝部署neo4j的實戰(zhàn)過程

    Docker是一種容器化技術(shù),可以在Linux系統(tǒng)上部署應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于Docker安裝部署neo4j的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • 使用Golang玩轉(zhuǎn)Docker API的實踐

    使用Golang玩轉(zhuǎn)Docker API的實踐

    這篇文章主要介紹了使用Golang玩轉(zhuǎn)Docker API的實踐,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 詳解docker容器分配靜態(tài)IP

    詳解docker容器分配靜態(tài)IP

    這篇文章主要介紹了詳解docker容器分配靜態(tài)IP,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Docker鏡像的制作與使用淺析

    Docker鏡像的制作與使用淺析

    這篇文章主要介紹了Docker鏡像的制作與使用淺析的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • docker?pull?mysql報missing?signature?key錯誤解決辦法

    docker?pull?mysql報missing?signature?key錯誤解決辦法

    這篇文章主要給大家介紹了關(guān)于docker?pull?mysql報missing?signature?key錯誤的解決辦法,docker pull mysql命令用于從Docker Hub下載MySQL鏡像,需要的朋友可以參考下
    2023-11-11
  • docker 安裝 php-fpm 服務(wù) / 擴展 / 配置的示例教程詳解

    docker 安裝 php-fpm 服務(wù) / 擴展 / 配置的示例教程詳解

    這篇文章主要介紹了docker 安裝 php-fpm 服務(wù) / 擴展 / 配置,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 基于Docker部署Tomcat集群、 Nginx負載均衡的問題小結(jié)

    基于Docker部署Tomcat集群、 Nginx負載均衡的問題小結(jié)

    這篇文章主要介紹了基于Docker部署 Tomcat集群、 Nginx負載均衡,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09

最新評論

额敏县| 吉木乃县| 东港市| 镇江市| 方正县| 托克逊县| 阳春市| 祁连县| 天峨县| 临清市| 独山县| 鲁山县| 双辽市| 保亭| 广河县| 黔西| 北票市| 峨山| 张家界市| 林芝县| 桑植县| 化州市| 乌审旗| 奉新县| 五常市| 安平县| 万宁市| 旬邑县| 胶南市| 将乐县| 古丈县| 阜平县| 宝清县| 林州市| 淳安县| 三门峡市| 翁源县| 肥东县| 诸暨市| 都江堰市| 乌鲁木齐县|