# 创建项目:

- 首先创建并进入一个目录(名字随意): mkdir Text&&cd Text

- 创建依赖文件vi requirements.txt (这个一般项目提供了)

- 目录树:

![](https://pub-5a0f6eb9946e46f7a86291cb56d50e98.r2.dev/2023/03/01/63fea5dc880c6.webp)

- 编写 Dockerfile 文件vi Dockerfile

- FROM:所有 Dockerfile 的第一个指令都必须是 FROM ,用于指定一个构建镜像的基础源镜像,如果本地没有就会从公共库中拉取,没有指定镜像的标签会使用默认的 latest 标签,如果需要在一个 Dockerfile 中构建多个镜像,可以使用多次。

* MAINTAINER:描述镜像的创建者,名称和邮箱。

* RUN:RUN 命令是一个常用的命令,执行完成之后会成为一个新的镜像,通常用于运行安装任务从而向映像中添加额外的内容。在这里,我们使用 pip 来安装 requirements. txt 文件中的所有包。

- COPY:复制本机文件或目录,添加到指定的容器目录,本例中将 requirements. txt 复制到镜像中。

* WORKDIR:为 RUN、CMD、ENTRYPOINT 指令配置工作目录。可以使用多个 WORKDIR 指令,后续参数如果是相对路径,则会基于之前命令指定的路径。

* ENTRYPOINT:在启动容器的时候提供一个默认的命令项。

* RUN:运行 telegramMemoBot 目录中的 main. py 。

- 贴个例子代码(memosbot):

```

FROM python:alpine

MAINTAINER sora233 "soragames@yeah.net"

RUN pip install --upgrade pip

COPY ./requirements.txt /requirements.txt

WORKDIR /

RUN pip3 install -r requirements.txt

COPY . /

ENTRYPOINT [ "python3" ]

CMD [ "telegramMemoBot/main.py" ]

```

- 构建代码docker build -t memosbot:0.3 . (注意最后有个点)

- 之后就可以直接 run 了,但是我喜欢用 compose 故贴个代码

```

version: '3'

services:

memosbot:

image: memosbot:0.3

restart: always

volumes:

- $PWD/data/config.py:/telegramMemoBot/config.py

```

---

# 推送项目:

## 去 docker hub 注册( https://hub.docker.com )

- 注册得到 docker id 和密码

### 服务器登录 docker hub 仓库

```

docker login

```

如下图表示登录成功

![](https://pub-5a0f6eb9946e46f7a86291cb56d50e98.r2.dev/2023/03/01/63fea5e507bd7.webp)

## 推送到 docker hub 仓库

注意 push 的镜像名要符合规范

```

用户名/仓库名:标签值(你可以将标签值理解为版本号,可以随意命名无任何影响,默认为lastest)

```

### 命名不规范解决办法:

- 用 docker tag 重新生成个镜像

- docker tag : 标记本地镜像,将其归入某一仓库。

语法

```

docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

```

例:

```

docker tag memosbot:0.3 Memosbot:0.3

```

这是再查看镜像列表就会发现多了个镜像

再次推送

```

docker push Memosbot:0.3

```

## 登录 docker hub 检查

登陆 [https://hub.docker.com/](https://hub.docker.com/) 点击 Repositories 菜单