结合python+redis+mysql制作镜像

国内的一个别人提供的一个公共的镜像仓库

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://hub.docker-alhk.dkdun.com/"]

}

EOF

 sudo systemctl daemon-reload

 sudo systemctl restart docker

第1步:编辑Dockerfile

[root@sc-docker-server ~]# mkdir /mydocker/

[root@sc-docker-server ~]# cd /mydocker/

[root@sc-docker-server mydocker]# vim Dockerfile

FROM python:2.7-slim

WORKDIR /app

ADD . /app

RUN pip install --trusted-host  pypi.python.org -r requirements.txt

EXPOSE 80

ENV NAME World

ENV AUTHOR cali

CMD ["python","app.py"]

第2步:编辑requirements.txt文件

[root@sc-docker-server mydocker]# vim requirements.txt

Flask

Redis

第3步:编辑app.py程序文件

[root@sc-docker-server mydocker]# vim app.py

from flask import Flask

from redis import Redis, RedisError

import os

import socket

# Connect to Redis

redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")

def hello():

    try:

        visits = redis.incr("counter")

    except RedisError:

        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "<h3>Hello {name}!</h3>" \

           "<b>Hostname:</b> {hostname}<br/>" \

           "<b>Visits:</b> {visits}"

    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

if __name__ == "__main__":

    app.run(host='0.0.0.0', port=80)

第4步:生成镜像文件

[root@sc-docker-server mydocker]#docker build -t myapp1.0   .

第5步使用镜像,启动容器

docker run -d -p 5080:80  --name sc-hello-1 myapp:1.0

第6步:访问容器的web服务

Hello World!

Hostname: f4aeb5d5305a

Visits: cannot connect to Redis, counter disabled

第7步: 启动redis容器

docker run -d -p 6379:6379 --name redis-1 redis

第8步: 再次启动一个自己制作镜像的容器,链接到redis容器  sc-redis-1是容器的名字  redis 是别名

docker run -d --name myapp-2 -p 5081:80 --link redis-1:redis myapp:1.0

第9步:访问容器的web服务

Hello World!

Hostname: aad7da1892b5

Visits: 15

分别启动2个容器

    A容器 --》app程序

    B容器 --》提供其他服务,例如:mysql、redis服务等

容器启动起来后都有一个唯一的ip地址,但是ip地址是私网里的

A容器能够找到B容器的方法有哪些?

        1.在app程序代码里写上B容器对应的ip地址和端口  ---》go语言的网站

                    写ip     写域名

        2.使用--link链接方式

            容器名字和ip地址会写到/etc/hosts

什么叫提供服务?

        背后有一个程序一直在允许,可以提供服务,例如: 网站、数据库、文件的访问

    阿里云的ACR  aliyun cloud register

    1.注册阿里云的账号

    2.访问ACR控制台--》开通个人服务

    3.创建一个命名空间

    4.访问命名空间需要密码,设置一个访问密码sc@123456

    5.创建一个镜像仓库

3. 将镜像推送到Registry 阿里云

$ docker login --username=aliyun8390986604 registry.cn-guangzhou.aliyuncs.com

$ docker tag 524ff915b071 registry.cn-guangzhou.aliyuncs.com/xiefengbao/myapp:1.0

$ docker push registry.cn-guangzhou.aliyuncs.com/xiefengbao/myapp:1.0

myapp                 1.0        524ff915b071  

nginx                  latest     bc649bab30d1

[root@docker Dockerfile]# docker images

REPOSITORY              TAG        IMAGE ID       CREATED         SIZE

myapp                   1.0        2ba278e9c4a1   3 hours ago     161MB

修改镜像的名字,里面嵌入阿里云私人仓库的地址

[root@docker Dockerfile]#docker tag 2ba278e9c4a1  registry.ap-southeast-1.aliyuncs.com/califeng/myapp:1.0

[root@docker Dockerfile]# docker images

REPOSITORY                                            TAG        IMAGE ID       CREATED         SIZE

myapp                                                 1.0        2ba278e9c4a1   3 hours ago     161MB

registry.ap-southeast-1.aliyuncs.com/califeng/myapp   1.0        2ba278e9c4a1   3 hours a

上传镜像到阿里云ACR里

[root@docker Dockerfile]# docker push registry.ap-southeast-1.aliyuncs.com/califeng/myapp:1.0

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是详细的步骤: 1. 首先,安装Docker和Docker Compose。可以在Docker官网上找到适合您操作系统的安装包。 2. 创建项目目录,并在其中创建以下文件和文件夹: - `docker-compose.yml`: Docker Compose配置文件 - `Dockerfile`: Django应用程序的Dockerfile - `requirements.txt`: Django应用程序的依赖项列表 - `app/`: Django应用程序的代码 - `uwsgi.ini`: uWSGI服务器配置文件 3. 编写Dockerfile文件,以构建Django应用程序的Docker镜像。以下是一个示例Dockerfile: ``` # 使用Python 3.8作为基础镜像 FROM python:3.8 # 设置工作目录 WORKDIR /app # 将当前目录中的文件复制到容器中的/app目录下 COPY . /app # 安装应用程序依赖项 RUN pip install -r requirements.txt # 设置环境变量 ENV DJANGO_SETTINGS_MODULE=myproject.settings.production # 运行uWSGI服务器 CMD ["uwsgi", "--ini", "/app/uwsgi.ini"] ``` 4. 编写uwsgi.ini文件,以配置uWSGI服务器。以下是一个示例uwsgi.ini: ``` [uwsgi] http = :8000 chdir = /app module = myproject.wsgi:application master = true processes = 2 threads = 2 vacuum = true ``` 5. 编写docker-compose.yml文件,以定义Docker Compose服务。以下是一个示例docker-compose.yml: ``` version: '3' services: web: build: . command: uwsgi --ini /app/uwsgi.ini volumes: - .:/app ports: - "8000:8000" depends_on: - db - redis db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: myproject volumes: - db_data:/var/lib/mysql redis: image: redis:latest volumes: db_data: ``` 6. 运行Docker Compose服务: ``` $ docker-compose up ``` 7. 访问http://localhost:8000,即可查看Django应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值