设计模式 HashMap Quartz Java Spring makefile bam security haskell jar swagger rss idea大小写转换快捷键 erp项目描述 docker的安全特性有哪些 数据库设计规范 清空input文本框的值 时间戳java lora开发 java使用redis mysql自然连接 mysql建表 java操作mysql java中的数据类型 java初级 java创建集合 linux启动 局域网助手 莫莫小工具 冬青鼠 枪神传说辅助 max电池容量 整站系统 java语言程序设计 pdf安装包官方下载 瑞兹技能 网络电子书 ps字体描边 键盘打字手指口诀 联想7450加粉清零 快剪辑怎么录制视频
当前位置: 首页 > 学习教程  > 编程语言

Dockerfile---脚本自动化

2020/10/8 20:27:52 文章标签:

一:编写一个Dockerfile脚本,构造一个具有python3环境的镜像 1:将原始Ubuntu镜像压缩包放在Desktop桌面。 pythonubuntu:~/Desktop$ ls meimei_project shopping-mall-project sql脚本 ubuntu.tar.gz 安装包文件2:镜像加载 …

一:编写一个Dockerfile脚本,构造一个具有python3环境的镜像

1:将原始Ubuntu镜像压缩包放在Desktop桌面。

python@ubuntu:~/Desktop$ ls
meimei_project  shopping-mall-project  sql脚本  ubuntu.tar.gz  安装包文件

2:镜像加载

python@ubuntu:~/Desktop$ docker load < ubuntu.tar.gz 
762d8e1a6054: Loading layer  91.39MB/91.39MB
e45cfbc98a50: Loading layer  15.87kB/15.87kB
d60e01b37e74: Loading layer  12.29kB/12.29kB
b57c79f4a9f3: Loading layer  3.072kB/3.072kB
832ff27e250b: Loading layer  187.7MB/187.7MB
f22b61b25d5c: Loading layer  3.072kB/3.072kB
2c3a13ec4d99: Loading layer    291MB/291MB
65bbf4f56f02: Loading layer  51.71kB/51.71kB
f235a7175832: Loading layer  44.08MB/44.08MB
a1174334046d: Loading layer  133.8MB/133.8MB
a290c0020912: Loading layer  92.14MB/92.14MB
2317a5d4b684: Loading layer   32.4MB/32.4MB
36dce86146ac: Loading layer  4.961MB/4.961MB
Loaded image: ubuntu:18.04

3: 将镜像运行成容器:

python@ubuntu:~/Desktop$ docker run -d --network=host ubuntu:18.04 
1caf2d13cdec9d32456ad624dc53f81b14bf98fd4a7d9b8d7451538486898c8c

4:进入容器内部:

python@ubuntu:~/Desktop$ docker ps -a
CONTAINER ID        IMAGE                               COMMAND                  CREATED              STATUS                     PORTS                         NAMES
1caf2d13cdec        ubuntu:18.04                        "nginx '-g daemon of…"   About a minute ago   Up About a minute                                        practical_cerf
66987d8aec15        nginx                               "nginx -g 'daemon of…"   3 hours ago          Up 3 hours                 192.168.203.153:777->80/tcp   nginx-3
56e2e5bd67b7        mysql:5.7.22                        "docker-entrypoint.s…"   3 weeks ago          Exited (0) 4 days ago                                    mysql-slave
b5a7b35611f8        delron/elasticsearch-ik:2.4.6-1.0   "/docker-entrypoint.…"   4 weeks ago          Exited (143) 2 days ago                                  elasticsearch
f90e380d626a        delron/fastdfs                      "/usr/bin/start1.sh …"   4 weeks ago          Exited (137) 3 hours ago                                 storage
f951dc81977c        delron/fastdfs                      "/usr/bin/start1.sh …"   4 weeks ago          Exited (137) 3 hours ago                                 tracker
python@ubuntu:~/Desktop$ docker exec -it 1caf2d13cdec /bin/bash
root@ubuntu:/# 

5:安装python3 :

root@ubuntu:/# apt-get install python3-pip -y
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
python3-pip 已经是最新版 (20.0.2-5ubuntu1)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 259 个软件包未被升级。

6:生成新的容器:

python@ubuntu:~/Desktop$ docker ps -a
CONTAINER ID        IMAGE                               COMMAND                  CREATED             STATUS                     PORTS                         NAMES
1caf2d13cdec        ubuntu:18.04                        "nginx '-g daemon of…"   7 minutes ago       Up 7 minutes                                             practical_cerf
66987d8aec15        nginx                               "nginx -g 'daemon of…"   3 hours ago         Up 3 hours                 192.168.203.153:777->80/tcp   nginx-3
56e2e5bd67b7        mysql:5.7.22                        "docker-entrypoint.s…"   3 weeks ago         Exited (0) 4 days ago                                    mysql-slave
b5a7b35611f8        delron/elasticsearch-ik:2.4.6-1.0   "/docker-entrypoint.…"   4 weeks ago         Exited (143) 2 days ago                                  elasticsearch
f90e380d626a        delron/fastdfs                      "/usr/bin/start1.sh …"   4 weeks ago         Exited (137) 3 hours ago                                 storage
f951dc81977c        delron/fastdfs                      "/usr/bin/start1.sh …"   4 weeks ago         Exited (137) 3 hours ago                                 tracker
python@ubuntu:~/Desktop$ docker commit -m "安装python3环境" -a "renshanwen" 1caf2d13cdec python3:V1.0
sha256:49c1e54dce5a0d82bd55a4de621476a9b717988e168393335401501727677d7c

此时发现多了一个python3的镜像。

python@ubuntu:~/Desktop$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED              SIZE
python3                   V1.0                49c1e54dce5a        About a minute ago   852MB
ubuntu                    18.04               1975b4bd017d        6 hours ago          852MB
nginx                     latest              f949e7d76d63        12 months ago        126MB
mysql                     5.7.22              0d16d0a97dd1        2 years ago          372MB
delron/fastdfs            latest              8487e86fc6ee        2 years ago          464MB
delron/elasticsearch-ik   2.4.6-1.0           095b6487fb77        2 years ago          689MB

7:总结安装的步骤:
选取一个基础镜像----> 运行成容器—> 进入容器—> 安装需要的环境和部署—>将新的容器提交成新的镜像。

项目部署—手动搭建镜像

<一>: 前序操作:

1:进入meiduo_mall/uwsgi.ini中设置虚拟环境代码注释掉(因为镜像中使用的是全局python,无需指定虚拟环境)

root@ubuntu:/data/meiduo_mall# vim uwsgi.ini

2:将meiduo_mall meiduo_mall_admin front_end_pc 打包

root@ubuntu:/data# ls
front_end_pc  front_end_pc.tar.gz  meiduo_mall  meiduo_mall_admin  meiduo_mall_admin.tar.gz  meiduo_mall.tar.gz

3:新建目录,拷贝打包文件和配置文件:

root@ubuntu:/data# ls
front_end_pc  front_end_pc.tar.gz  meiduo_mall  meiduo_mall_admin  meiduo_mall_admin.tar.gz  meiduo_mall.tar.gz
root@ubuntu:/data# mkdir base
root@ubuntu:/data# mv *.tar.gz base
root@ubuntu:/data# ls
base  front_end_pc  meiduo_mall  meiduo_mall_admin
root@ubuntu:/data# cd base
root@ubuntu:/data/base# ls
front_end_pc.tar.gz  meiduo_mall_admin.tar.gz  meiduo_mall.tar.gz
root@ubuntu:/data/base# cp /etc/nginx/conf.d/*.conf ./
root@ubuntu:/data/base# ls
8000.conf  8080.conf  8081.conf  front_end_pc.tar.gz  meiduo_mall_admin.tar.gz  meiduo_mall.tar.gz

4:把ubuntu压缩包恢复镜像,并且运行成容器。

python@ubuntu:~/Desktop$ docker load < ubuntu.tar.gz 
python@ubuntu:~/Desktop$ docker container run -d --name meiduo ubuntu:18.04
74e33bfc58944dca7f266de109e7ace72f2c42cc03e0e1679ed0fc2f8d245c59

进入容器:

python@ubuntu:~/Desktop$ docker container exec -it meiduo /bin/bash
root@74e33bfc5894:/# 

<二>搭建容器—手动构建

1、安装依赖

  • 4.1、Nginx安装(韦伟老师给的镜像已经安装好啦)
  apt-get install nginx -y --allow-unauthenticated 
  • 4.2、安装python3环境(韦伟老师给的镜像已经安装好啦)
  apt-get install python3-pip -y

2:上传工程文件并解压:

root@74e33bfc5894:/# scp root@192.168.203.153:/data/base/front_end_pc.tar.gz /data/
root@192.168.203.153's password: 
front_end_pc.tar.gz                                                                                                                                   100% 1246KB 121.5MB/s   00:00    
root@74e33bfc5894:/# scp root@192.168.203.153:/data/base/meiduo_mall.tar.gz /data/
root@192.168.203.153's password: 
meiduo_mall.tar.gz                                                                                                                                    100%  453KB  84.8MB/s   00:00    
root@74e33bfc5894:/# scp root@192.168.203.153:/data/base/meiduo_mall_admin.tar.gz /data/
root@192.168.203.153's password: 
meiduo_mall_admin.tar.gz  
tar -z xvf front_end_pc.tar.gz 
tar -z xvf meiduo_mall.gz 
tar -z xvf meiduo_mall_admin.tar.gz 

3:安装美多工程依赖环境(镜像已经安装好啦)

cd /data/meiduo_mall

pip3 install -r requirements.txt
4:上传nginx部署文件:

root@74e33bfc5894:/# scp root@192.168.203.153:/data/base/8080.conf  /etc/nginx/conf.d/
root@192.168.203.153's password: 
8080.conf                                                                                                                                             100%  193   507.0KB/s   00:00    
root@74e33bfc5894:/# scp root@192.168.203.153:/data/base/8081.conf  /etc/nginx/conf.d/
root@192.168.203.153's password: 
8081.conf                                                                                                                                             100%  185   438.9KB/s   00:00    
root@74e33bfc5894:/# scp root@192.168.203.153:/data/base/8000.conf  /etc/nginx/conf.d/
root@192.168.203.153's password: 
8000.conf      

5:退出重启容器:(目的是重新启动nginx服务)

python@ubuntu:~/Desktop$ docker restart meiduo
meiduo

6: 进入容器并启动美多工程

docker container exec -it meiduo /bin/bash
cd /data/meiduo_mall
uwsgi --ini uwsgi.ini

<二>搭建容器—脚本构建镜像

1、编写/data/base/Dockerfile脚本,内容如下:

# 选择基础镜像
FROM ubuntu:18.04
# 作者
MAINTAINER weiwei

# 更新源(韦伟老师给的镜像已经安装好故不用执行)
# RUN apt-get update -y
# 安装nginx(韦伟老师给的镜像已经安装好故不用执行)
# RUN apt-get install nginx -y --allow-unauthenticated
# 安装python3(韦伟老师给的镜像已经安装好故不用执行)
# RUN apt-get install python3-pip -y

# 把工程文件上传容器
ADD front_end_pc.tar.gz /data/
ADD meiduo_mall_admin.tar.gz /data/
ADD meiduo_mall.tar.gz /data/

# 切换到美多工程目录,并且安装依赖(韦伟老师给的镜像已经安装好故不用执行)
# WORKDIR /data/meiduo_mall/
# RUN pip3 install -r requirements.txt

COPY 8080.conf /etc/nginx/conf.d/
COPY 8081.conf /etc/nginx/conf.d/
COPY 8000.conf /etc/nginx/conf.d/

# 设置环境变量;作用:指定系统语言为UTF-8;如果不设置,uwsgi运行无法处理中文语言
ENV LC_ALL="zh_CN.utf8"

# 容器开放端口为8080和8081
EXPOSE 8080 8081
# 发送容器启动脚本
COPY command.sh /data
# 切换容器目录
WORKDIR /data
# 指定容器运行的启动指令
ENTRYPOINT ["/bin/bash", "command.sh"]

启动脚本command.sh内容如下:

cd /data/meiduo_mall/
uwsgi --ini uwsgi.ini
nginx -g "daemon off;"

2、使用Dockerfile脚本生成镜像

docker image build -t meiduo ./

3、运行镜像

docker container run -d --name meiduo --network=host meiduo:latest

4、使用浏览器访问


本文链接: http://www.dtmao.cc/news_show_250305.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?