中道失败

通过ansible部署lb+web+db存储架构.
web中的nginx和php要运行在docker中,其他不需要
image.png

  1. 首先准备好管理机和被管理机的环 境

集群中的容器管理

  1. 先制作镜像后搭建内容,使用官方镜像进行了一波艰苦的制作,结果发现还不如自己制作的镜像来的方便,尤其是php这方面。

    自己制作php可以参考《多个容器组建云盘》这一本知识库内的文档
    php的官方镜像疑似是编译安装的,路径和apt的不一样,www.conf 的内容也和apt的不一样,少一些,镜像中也没有安装各种插件,查了查好吧它是debian系统不是ubuntu

  • 开始制作镜像:随便找一台机器 mkdir -p /server/docker/kodexp/
  • 写docker copy用的配置文件 ```bash vim /server/dockercompose/kodexp/conf/kodexp.azisamememe.shop.conf

server{ listen 80; server_name kodexp.azisamememe.shop; root /app/code/kodexp; access_log /var/log/nginx/kodexp.azisamememe.shop-access.log main; error_log /var/log/nginx/kodexp.azisamememe.shop-error.log notice;

location / { index index.php; }

location ~ .php$ { fastcgi_pass php:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

  1. ```bash
  2. mkdir /server/dockercompose/kodexp/{conf,data,code}
  3. vim /server/dockercompose/kodexp/conf/nginx.conf
  4. user nginx;
  5. worker_processes auto;
  6. error_log /var/log/nginx/error.log notice;
  7. pid /var/run/nginx.pid;
  8. events {
  9. worker_connections 1024;
  10. }
  11. http {
  12. include /etc/nginx/mime.types;
  13. default_type application/octet-stream;
  14. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  15. '$status $body_bytes_sent "$http_referer" '
  16. '"$http_user_agent" "$http_x_forwarded_for"';
  17. access_log /var/log/nginx/access.log main;
  18. sendfile on;
  19. #tcp_nopush on;
  20. keepalive_timeout 65;
  21. #gzip on;
  22. include /etc/nginx/conf.d/*.conf;
  23. }
  • 上传代码到/server/docker/kodexp
  • 写dockerfile构建镜像 ```bash vim /server/docker/kodexp/Dockerfile

获取nginx

FROM nginx:1.20.2-alpine LABEL desrc=”这是一个alpine为基础的nginx镜像” auther=”clq”

复制各种配置文件和源代码

COPY nginx.conf /etc/nginx/nginx.conf COPY kodexp.azisamememe.shop.conf /etc/nginx/conf.d/kodexp.azisamememe.shop.conf ADD kodexp.tar.gz /app/code/kodexp/

RUN chown -R nginx.nginx /app/code/kodexp

生成镜像

docker build -t “kodexp_nginx:v1.7-alpine” .

```bash
vim /server/docker/kodexp/php.dockfile

# 获取php
FROM php:7-fpm
LABEL desrc="这是一个php为基础的镜像" auther="clq"

# 复制各种配置文件和源代码
ADD kodexp.tar.gz /app/code/kodexp/

# 开始run
RUN apt update\
 && groupadd nginx \
 && useradd nginx -g nginx\
 && chown -R nginx.nginx /app/code/kodexp/ \
 && sed -ri 's#user =.*#user = nginx#g' /usr/local/etc/php-fpm.d/www.conf \
 && sed -ri 's#group =.*#group = nginx#g' /usr/local/etc/php-fpm.d/www.conf


# 生成镜像
docker build -f php.dockerfile -t "kodexp_php:v1.6-ubuntu" .
  • 上传到仓库,上传前配置仓库管理机需要做的事情,具体见本知识库文档《镜像仓库》
    docker tag kodexp_nginx:v1.7-alpine registry:5000/web/kodexp_nginx:v1.7-alpine
    docker push registry:5000/web/kodexp_nginx:v1.7-alpine 
    docker tag kodexp_php:v1.6-ubuntu registry:5000/web/kodexp_php:v1.6-ubuntu
    docker push registry:5000/web/kodexp_php:v1.6-ubuntu
    
  1. 先试着写docker-compose,之后用ansible分发compose ```bash

    改变ansible中的目录结构

    mkdir docker-with-ansible mv docker-config/ group_vars/ hosts top.yml ./docker-with-ansible/

创建docker-compose文件

vim /server/ansible/roles/docker-with-ansible/xxx/files/docker-compose.yml

version: “3.3” services: web_nginx1:
image: “registry:5000/web/kodexp_nginx:v1.7-alpine” links:

  - web_php:php
ports:
  - "80:80"
volumes:
  - /server/compose/kodexp_data/:/app/code/kodexp/data/

web_nginx2:
image: “registry:5000/web/kodexp_nginx:v1.7-alpine” links:

  - web_php:php
ports:
  - "81:80"
volumes:
  - /server/compose/kodexp_data/:/app/code/kodexp/data/

web_php: image: “registry:5000/web/kodexp_php:v1.6-ubuntu” expose:

  - 9000
volumes:
  - /server/compose/kodexp_data/:/app/code/kodexp/data/
<a name="qPWjo"></a>
# 写ansible
先准备好主机清单和hosts文件<br />web1~4, nfs, lb
<a name="VC1Jf"></a>
## nfs
```bash
# 创建目录
mkdir /server/ansible/roles/docker-with-ansible/nfs/{files,templates,handlers,}

lb

web