中道失败
通过ansible部署lb+web+db存储架构.
web中的nginx和php要运行在docker中,其他不需要
- 首先准备好管理机和被管理机的环 境
先制作镜像后搭建内容,使用官方镜像进行了一波艰苦的制作,结果发现还不如自己制作的镜像来的方便,尤其是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; } }
```bashmkdir /server/dockercompose/kodexp/{conf,data,code}vim /server/dockercompose/kodexp/conf/nginx.confuser nginx;worker_processes auto;error_log /var/log/nginx/error.log notice;pid /var/run/nginx.pid;events {worker_connections 1024;}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf;}
- 上传代码到/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
- 先试着写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,}
