网站运作方式,紧急紧急626969,网站建设中关村,天津网站建设的公司哪家好dockercompose部署应用
部署案例的应用1
python的案例
centosflask 容器
redis容器
提供一个 网站程序#xff0c;刷新一次#xff0c;看到页面计数器1 compose 定义两个服务 flask服务#xff08;容器#xff09;-----镜像#xff0c;运行环境#xff0c;物料…dockercompose部署应用
部署案例的应用1
python的案例
centosflask 容器
redis容器
提供一个 网站程序刷新一次看到页面计数器1 compose 定义两个服务 flask服务容器-----镜像运行环境物料源码 redis服务容器----镜像运行环境配置物料 流程 定义好目录准备好源码。配置文件docker-compose.yml文件2python程序的依赖模块文件 模拟开发准备好源码程序python程序运行环境 运维一定要懂部署这个环节 ta 先构建好本地镜像准备你的docker-compose.yml 容器编排脚本文件描述容器和容器之间的运行参数运行关系 docker run xxx
docker run xxx
容器实例↓
改造为 yaml描述 容器与容器之间的关系# 规范写法
1. 定义好目录准备源码配置文件docker-compose.yml- 模拟开发准备好源码程序
- python程序运行环境 运维一定要懂部署这个环节
[rootdocker-200 /compose-all/flask-redis]#cat flask-redis.pyfrom flask import Flask
from redis import Redisapp Flask(__name__)
redis Redis(hostredis, port6379)app.route(/)
def hello():count redis.incr(dianji)return linux0224 学习 docker-compose中运行flask程序 , 这个页面被点击了 {} 次\n.format(count)if __name__ __main__:app.run(host0.0.0.0, debugTrue)文件2python程序的 依赖模块文件
cat requirements.txt EOF
flask
redis
EOF2. 准备运行环境的设置docker-compose.yml
# 这里用的是aly的源https://mirrors.aliyun.com/pypi/simple/2.1 先构建好本地镜像
cat Dockerfile EOF
FROM python:3.9.7
MAINTAINER linux0224
COPY flask-redis.py /opt
COPY requirements.txt /opt
WORKDIR /opt
RUN pip3 install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/
RUN pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
EOF2.2 查看镜像[rootdocker-200 /compose-all/flask-redis]#docker history my-flask-redis:latest [rootdocker-200 /compose-all/flask-redis]#docker images my-flask-redis
REPOSITORY TAG IMAGE ID CREATED SIZE
my-flask-redis latest 3c2066a34a73 About a minute ago 937MB3.准备你的docker-compose.yml 容器编排脚本文件描述容器和容器之间的运行参数运行关系3.1 给你的flask应用单独创建个网桥
[rootdocker-200 /compose-all/flask-redis]#docker network create --subnet192.168.17.0/24 --gateway192.168.17.254 my-flask-net
083af13e074290456c5a7c43b049114d2a44f0c2bc26a359b0085bbc640833fe# 查看具体的端口信息[rootdocker-200 /compose-all/flask-redis]#docker inspect my-flask-net
执行compose文件去创建flaskredis的两个容器服务以及自定义网络的运行环境
还差了很多的东西
在公司部署compose环境就是一步一步的调试而来学会如何的调试
查看command如何用字段的文档
https://docs.docker.com/compose/compose-file/#command
1.欠缺flask的运行命令
2.欠缺flask链接redis容器的代码中用的主机名是redis
查看服务和服务之间的依赖参数文档
https://docs.docker.com/compose/compose-file/#depends_on
先启动redis
flask再去依赖它
[rootdocker-200 /compose-all/flask-redis]#cat docker-compose.yml
# wordpress
version: 3
services:myflask: # 制定运行的服务名字其他服务会来调这个名字image: my-flask-redis # dockerfile先构建好镜像container_name: my-flask-redis-app # --name 运行的容器名字environment: # 等于 -e 给容器传入运行时的 系统env环境变量 - namelinux0224- pwdlinux0224volumes:- /tmp/flask-redis-log/:/var/log/ports:- 5000:5000command: [python3,/opt/flask-redis.py]networks:- my-flask-netredis:image: redis:latestcontainer_name: my-redis environment:- redis_nameredis5ports:- 6379:6379networks:- my-flask-netnetworks: # 1.先定义好网络的信息 2. 给service去调用即可my-flask-net: # 宿主机网络的驱动类型external: true # 调用外部的网络环境name: my-flask-net #具体网络驱动的名字# compose 将你 docker run 运行参数改为描述文件
# docker run --network 网桥
# docker run --networkhost
[rootdocker-200 /compose-all/flask-redis]#
检查语法、执行创建俩容器
docker-compose config -q
启动docker-compose的这个yml脚本
docker-compose up 即可 确定运行成功 练习docker-compose生产产品
1. 练习jumpserver容器化部署去官网找资料
https://docs.jumpserver.org/zh/master/install/setup_by_fast/2.将spug跑起来
https://spug.cc/docs/install-docker1. 看人家docker-compose怎么写理解语法2. 运行起来的容器内部信息如环境变量存储卷如后端应用进程如配置文件
如何转化理解将docker的手工运行转为yaml LNMP 公司php后端员工管理系统部署到容器里 nginx, php ,mysql 互相走主机 –name my-mysql–name my-php --link my-mysql—name my-nginx --link my-php docker run 挨个的运行每一个容器的环境的环境# 服务1 nginx,web 代理服务
# 服务2 所有的宿主机nginx的运行环境迁移到容器里面去跑 /etc/nginxdocker run -d --name mynginx -p 80:80 \
-v /etc/nginx/:/etc/nginx \
-v /var/log/nginx:/var/log/nginx \
nginx:latest # 服务2php服务提供后端服务
# 先基于dockerfile构建phpcentos 环境docker run -d --name myphp -v 宿主机目录:容器内要暴露给外部的数据 myphp1.捋清楚启动容器的顺序-----------你写yaml。中服务的依赖关系定义
2. 容器启动的参数如网络数据卷端口暴露这就是 对每一个制定的服务设置的参数案例2 docker-compose部署zabbix
compose文件
# 获取zabbix-compose脚本升级compose复杂编程1.可以去官网获取复杂需要你去思考的部署的逻辑、# 官方网址https://github.com/zabbix/zabbix-docker
这里还少一些东西
version: 3 #内容填3或者2
services:mysql: #服务名称 image: mysql:5.7 #镜像名称container_name: mysql #容器名称user: 2000:2000 #指定用户environment: #服务所需的操作- MYSQL_ROOT_PASSWORDlinux0224- MYSQL_DATABASEzabbix- MYSQL_USERzabbix- MYSQL_PASSWORDzabbixlinux0224volumes:- /data/docker_mysql:/var/lib/mysql #映射的数据目录ports:- 3306:3306 #映射端口command: #所需的命令这里指指定字符集--character-set-serverutf8 --collation-serverutf8_binzabbix-server-mysql:image: zabbix/zabbix-server-mysqlcontainer_name: zabbix-server-mysqlenvironment:- DB_SERVER_HOSTmysql- MYSQL_USERzabbix- MYSQL_ROOT_USERroot- MYSQL_ROOT_PASSWORDlinux0224- MYSQL_PASSWORDzabbixlinux0224ports:- 10051:10051depends_on: #需要链接的服务link换成了depends_on- mysql zabbix-web-nginx-mysql:image: zabbix/zabbix-web-nginx-mysqlcontainer_name: zabbix-web-nginx-mysqlenvironment:- DB_SERVER_HOSTmysql- MYSQL_USERzabbix- MYSQL_PASSWORDzabbixlinux0224- ZBX_SERVER_HOSTzabbix-server-mysql- PHP_TZAsia/Shanghaiports:- 80:8080depends_on:- mysql- zabbix-server-mysqlnetworks:deault:external: truename: zabbix-net检查语法
[rootdocker-110 zabbix-all]# docker-compose config -q
启动docker-compose
[rootdocker-110 zabbix-all]# docker-compose up -d
# 后台运行# 创建网络资源以当前文件夹命名创建network环境以及创建容器运行停止docker-compose 容器组
docker-compose stop默认都找当前
[rootdocker-200 /compose-all/zabbix-all]#ls
docker-compose.yml危险命令停止且移除compose定义的资源
docekr-compose down
[rootdocker-110 zabbix-all]# docker logs ac7bdb89b6ca
2025-06-13 13:49:0500:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
2025-06-13 13:49:0600:00 [Note] [Entrypoint]: Initializing database files
mysqld: Cant create/write to file /var/lib/mysql/is_writable (Errcode: 13 - Permission denied)这个是为什么mysql起不来的原因
是因为最后一行他这里没有权限访问这个目录
# ----》这是报错其根本的原因是yaml的脚本里面是2000这个用户去跑而主机是root用户去使用的所以权限不足。解决权限问题
给映射的mysql数据目录给个用户 mysql 2000
[rootdocker-200 /compose-all/zabbix-linux0224]#useradd -u 2000 -M -s /sbin/nologin mysql
[rootdocker-200 /compose-all/zabbix-linux0224]#
[rootdocker-200 /compose-all/zabbix-linux0224]#chown -R mysql.mysql /data/ 用compose命令查看容器组信息
[rootdocker-200 /compose-all/zabbix-linux0224]#docker-compose stop
WARNING: Some networks were defined but are not used by any service: deault
Stopping zabbix-web-nginx-mysql ... done
Stopping zabbix-server-mysql ... done
[rootdocker-200 /compose-all/zabbix-linux0224]#
[rootdocker-200 /compose-all/zabbix-linux0224]#
[rootdocker-200 /compose-all/zabbix-linux0224]#
[rootdocker-200 /compose-all/zabbix-linux0224]#
[rootdocker-200 /compose-all/zabbix-linux0224]#docker-compose start
WARNING: Some networks were defined but are not used by any service: deault
Starting mysql ... done
Starting zabbix-server-mysql ... done
Starting zabbix-web-nginx-mysql ... done
[rootdocker-200 /compose-all/zabbix-linux0224]#docker-compose ps
WARNING: Some networks were defined but are not used by any service: deaultName Command State Ports
---------------------------------------------------------------------------------------------------------------------
mysql docker-entrypoint.sh --cha ... Up 0.0.0.0:3306-3306/tcp,:::3306-3306/tcp, 33060/tcp
zabbix-server-mysql /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10051-10051/tcp,:::10051-10051/tcp
zabbix-web-nginx-mysql docker-entrypoint.sh Up 0.0.0.0:80-8080/tcp,:::80-8080/tcp, 8443/tcp
[rootdocker-200 /compose-all/zabbix-linux0224]#
小结 编排之后用编排的命令去统一的管理 这个就是容器编排的意义所在这个只是单机的容器编排后面学习k8s后的多容器编排… /etc/zabbix/zabbix_server.conf
USE_DB_ROOT_USERfalse
CREATE_ZBX_DB_USERfalse
file_env MYSQL_USER
file_env MYSQL_PASSWORD file_env MYSQL_ROOT_USER
file_env MYSQL_ROOT_PASSWORD