Browse Source

assignment2 modify

merge-requests/1/head
wangyu 3 years ago
parent
commit
ae08be888c
1 changed files with 41 additions and 29 deletions
  1. +41
    -29
      Assignment2.md

+ 41
- 29
Assignment2.md View File

@ -362,51 +362,62 @@ mkdir /var/html
#### 1.从repo中下载[附件](/file/assignment2/demo.zip),通过`scp`命令上传到云服务器并解压
```bash
$ scp demo.zip root@113.31.112.166:~
$ scp demo.zip root@113.31.105.65:~
root@113.31.112.166's password:
/etc/profile.d/lang.sh: line 19: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
demo.zip 0% 0 0.0KB/s --:-- ETAsFoodTrucks.zip 100% 1097KB 488.5KB/s 00:02
root@113.31.105.65's password:
demo.zip 100% 1308 142.4KB/s 00:00
$ unzip demo.zip
$ unzip FoodTrucks.zip
Archive: FoodTrucks.zip
creating: FoodTrucks/
inflating: __MACOSX/._FoodTrucks
inflating: FoodTrucks/.DS_Store
...
Archive: demo.zip
creating: demo/
inflating: __MACOSX/._demo
inflating: demo/Dockerfile
inflating: demo/app.py
```
#### 2.查看Dockerfile
#### 这是一个`Flask App`,是一个用`python`写的网页应用,我们进入`FootTrucks`文件夹, 使用`cat Dockerfile`命令查看`Dockerfile的内容`,显示如下:
#### 这是一个`Flask App`,是一个用`python`写的网页应用,我们进入`demo`文件夹,只有两个文件`app.py、Dockerfile`
#### 首先我们使用`cat app.py`命令查看`app.py`的内容,显示如下:
```python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'hello world!'
if __name__ == '__main__':
app.run(host='0.0.0.0')
```
#### 看不懂没有关系,这就是一个很简单的flask应用,它定义了一个路由,当我们访问:`http://localhost:5000/`的时候,浏览器会给我们返回`hello world!`
#### 接下来我们继续查看`Dockerfile`:
```dockerfile
# 基于ubuntu:18.04容器
FROM cloud_computing/ubuntu:18.04
# 拉取python镜像作为基本环境
FROM cloud_computing/python:latest
# 安装相关依赖
RUN apt-get -yqq update
RUN apt-get -yqq install python3-pip python3-dev curl gnupg
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash
RUN apt-get install -yq nodejs
# 设置额外信息
LABEL description="Dockerfile Demo for ECNU"
# 将本地目录拷贝到container并且设置为工作目录
ADD flask-app /opt/flask-app
WORKDIR /opt/flask-app
# 在container中运行命令(这一步在container安装pip依赖)
RUN pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装node和python的相关依赖
RUN npm install
RUN npm run build
RUN pip3 install -r requirements.txt
# 将本地目录拷贝到container并且设置为工作目录
ADD ./app.py /opt
WORKDIR /opt
# 将5000端口暴露出来
EXPOSE 5000
# 容器启动的执行命令
CMD [ "python3", "./app.py" ]
CMD python app.py
```
#### 可以看出`Dockerfile`的书写非常简单易懂,涉及到几个命令
@ -418,6 +429,7 @@ CMD [ "python3", "./app.py" ]
| WORKDIR | 将容器中某个目录设置为工作目录(当前目录) |
| EXPOSE | 将容器中某个端口暴露出来(如上述flask工作在5000端口,将其暴露出来) |
| CMD | 容器启动自动执行的shell命令 |
| LABEL | 设置一些额外的信息 |
#### 通过`dockerfile`的方式,我们就可以将各种各样的环境打包成镜像上传到`docker hub`上供他人使用
@ -431,7 +443,7 @@ $ docker build -t user-name/image-name .
#### 通过上面的命令,我们就在本地打包好了一个名叫`username/image-name`的镜像,我们可以通过之前学习的`docker run`命令去创建该镜像的`container`
**************作业4:利用dockerfile将当前环境打包为 `英文姓名/food` 的`image`,并通过`docker`命令将创建该镜像的`container`,将`5000`端口映射到本地的`8080`端口。将打包镜像的命令、创建容器的命令以及浏览器页面截图,并插入实验报告中***************
**************作业4:利用dockerfile将当前环境打包为 `英文姓名/demo` 的`image`,并通过`docker`命令将创建该镜像的`container`,将`5000`端口映射到本地的`8080`端口。将打包镜像的命令、创建容器的命令以及浏览器页面截图,并插入实验报告中***************
#### `build`过程可能耗时较长,请耐心等待。。。

Loading…
Cancel
Save