Browse Source

增加 discuz 容器

liuyuqi-dellpc 5 years ago
parent
commit
e6296fe0cf

+ 40 - 0
docker/discuz/Dockerfile

@@ -0,0 +1,40 @@
+FROM php:5.6-apache
+
+LABEL Name=discuz Version=4.3x
+RUN echo "Asia/Shanghai" > /etc/timezone;dpkg-reconfigure -f noninteractive tzdata
+RUN apt-get update && apt-get install -y \
+    php5-mcrypt \
+    libmcrypt4 \
+    libmcrypt-dev \
+    libpng-dev \
+    vim \
+    curl \
+    rsync \
+    wget \
+    --no-install-recommends && rm -r /var/lib/apt/lists/*
+
+RUN docker-php-ext-install \
+    mysql \
+    mysqli \
+    sockets \
+    pdo \
+    pdo_mysql \
+    mbstring \
+    mcrypt \
+    gd
+
+RUN mkdir -p /app/discuz && alias ll='ls -alF'
+
+ADD ./app /app/discuz
+RUN chown www-data:www-data /app/discuz/ -R
+RUN chmod -R 777 /app/discuz
+
+COPY config/000-default.conf /etc/apache2/sites-available/000-default.conf
+COPY config/apache2.conf /etc/apache2/apache2.conf
+
+WORKDIR /app
+VOLUME /data
+
+ENTRYPOINT ["/app/discuz/docker-entrypoint.sh"]
+EXPOSE 80
+# CMD [ "apache2","-DFOREGROUND" ]

+ 42 - 0
docker/discuz/Dockerfile-with-Mysql

@@ -0,0 +1,42 @@
+FROM php:5.6-apache
+
+LABEL Name=discuz Version=0.0.1
+RUN echo "Asia/Shanghai" > /etc/timezone;dpkg-reconfigure -f noninteractive tzdata
+RUN apt-get update && apt-get install -y \
+    php5-mcrypt \
+    libmcrypt4 \
+    libmcrypt-dev \
+    libpng-dev \
+    vim \
+    curl \
+    rsync \
+    wget \
+    --no-install-recommends && rm -r /var/lib/apt/lists/*
+
+RUN docker-php-ext-install \
+    mysql \
+    mysqli \
+    sockets \
+    pdo \
+    pdo_mysql \
+    mbstring \
+    mcrypt \
+    gd
+
+RUN mkdir -p /app/discuz && alias ll='ls -alF'
+
+ADD ./app /app/discuz
+RUN chown www-data:www-data /app/discuz/ -R
+RUN chmod -R 777 /app/discuz
+
+COPY config/000-default.conf /etc/apache2/sites-available/000-default.conf
+COPY config/apache2.conf /etc/apache2/apache2.conf
+
+WORKDIR /app
+VOLUME /data
+
+ENTRYPOINT ["/app/discuz/docker-entrypoint.sh"]
+EXPOSE 80
+# CMD [ "apache2","-DFOREGROUND" ]
+
+FROM mysql:5.6

+ 25 - 0
docker/discuz/README.md

@@ -0,0 +1,25 @@
+## docker-discuz
+
+本项目构建两个容器:web容器,db容器。
+
+1、下载discuz代码: get-discuz.sh
+
+2、执行 docker build 构建 discuz 镜像:
+
+```
+docker build -t discuz:4.3x .
+# docker run -d discuz:4.3x -p 8090:80
+
+```
+3、启动环境
+
+```
+docker-compose up 
+#docker run -p 3306:3306 -v ~/opt/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -it eva/mysql
+#docker exec -ti focused_haibt /bin/bash
+
+```
+
+4、合并一个容器
+
+容器编排一般减少耦合,discuz web和db一般分两个容器启动,而有时为了简单测试,将 mysql 并入disucz容器中成一个容器,构建文件:Dockerfile-with-Mysql

+ 0 - 0
docker/discuz/config/000-default.conf


+ 6 - 0
docker/discuz/config/apache2.conf

@@ -0,0 +1,6 @@
+<VirtualHost *:80>
+	DocumentRoot /app/discuz
+	<Directory /app/discuz>
+		AllowOverride all
+	</Directory>
+</VirtualHost>

+ 10 - 0
docker/discuz/docker-compose.debug.yml

@@ -0,0 +1,10 @@
+version: '2.1'
+
+services:
+  d:
+    image: d
+    build:
+      context: .
+      dockerfile: Dockerfile
+    ports:
+      - 3000:3000

+ 30 - 0
docker/discuz/docker-compose.yml

@@ -0,0 +1,30 @@
+version: "2.1"
+
+services:
+  mysql:
+    image: daocloud.io/mysql:5.7.4
+    volumes:
+      - /var/lib/docker/db_data:/var/lib/mysql
+  restart: always
+  environment:
+    MYSQL_ROOT_PASSWORD: somewordpress
+    MYSQL_DATABASE: wordpress
+    MYSQL_USER: wordpress
+    MYSQL_PASSWORD: 123456
+  discuz:
+    image: discuz:4.3x
+    ports:
+      - 8080:80
+  wordpress:
+    depends_on:
+      - db
+    image: daocloud.io/library/wordpress:4.2.1-apache
+    volumes:
+      - /data/web_data:/var/www/html
+    ports:
+      - "8080:80"
+    restart: always
+    environment:
+      WORDPRESS_DB_HOST: db:3306
+      WORDPRESS_DB_USER: wordpress
+      WORDPRESS_DB_PASSWORD: 123456

+ 28 - 0
docker/discuz/docker-entrypoint.sh

@@ -0,0 +1,28 @@
+#!/bin/bash
+set -e
+
+# 数据持久化操作
+persist_dirs="config data uc_server/data uc_client/data/cache"
+dest_dir=/data/discuz
+source_dir=/app/discuz
+mkdir -p ${dest_dir}
+
+# 在持久化存储中创建需要的目录
+for d in ${persist_dirs} ; do
+    if [ -d ${dest_dir}/${d} ] ; then
+        rm -rf ${source_dir}/${d}
+    else
+        mkdir -p ${dest_dir}/${d}
+        cp -r ${source_dir}/${d}/* ${dest_dir}/${d}
+        rm -rf ${source_dir}/${d}
+    fi
+    pdir=$(dirname ${source_dir}/${d})
+    ln -s ${dest_dir}/${d} ${pdir}
+done
+
+echo "discuz success"
+
+# 设置权限
+chmod -R 777 /data/
+
+apache2-foreground

+ 3 - 0
docker/discuz/get-discuz.sh

@@ -0,0 +1,3 @@
+wget https://xx.com/downloads/discuz4.3x.tar.gz
+mkdir discuz
+tar -zxf discuz4.3x.tar.gz discuz

+ 57 - 0
docker/laravel/Dockerfile

@@ -0,0 +1,57 @@
+# 前端构建
+FROM node:alpine as frontend
+
+COPY package.json /app/
+
+RUN cd /app \
+&& npm install --registry=https://registry.npm.taobao.org
+
+COPY webpack.mix.js /app/
+COPY resources/assets/ /app/resources/assets/
+
+RUN cd /app \
+&& npm run production
+
+# 安装 Composer 依赖
+FROM composer as composer
+
+COPY database/ /app/database/
+COPY composer.json composer.lock /app/
+
+RUN cd /app \
+&& composer config -g repo.packagist composer https://packagist.laravel-china.org \
+&& composer install \
+--ignore-platform-reqs \
+--no-interaction \
+--no-plugins \
+--no-scripts \
+--prefer-dist
+
+# 整合 php环境
+FROM php:7.2-fpm-alpine as laravel
+
+ARG LARAVEL_PATH=/app/laravel
+
+COPY --from=composer /app/vendor/ ${LARAVEL_PATH}/vendor/
+COPY . ${LARAVEL_PATH}
+COPY --from=frontend /app/public/js/ ${LARAVEL_PATH}/public/js/
+COPY --from=frontend /app/public/css/ ${LARAVEL_PATH}/public/css/
+COPY --from=frontend /app/mix-manifest.json ${LARAVEL_PATH}/mix-manifest.json
+
+RUN cd ${LARAVEL_PATH} \
+&& php artisan package:discover \
+&& mkdir -p storage \
+&& mkdir -p storage/framework/cache \
+&& mkdir -p storage/framework/sessions \
+&& mkdir -p storage/framework/testing \
+&& mkdir -p storage/framework/views \
+&& mkdir -p storage/logs \
+&& chmod -R 777 storage
+
+# 启动 nginx
+FROM nginx:alpine as nginx
+
+ARG LARAVEL_PATH=/app/laravel
+
+COPY laravel.conf /etc/nginx/conf.d/
+COPY --from=laravel ${LARAVEL_PATH}/public ${LARAVEL_PATH}/public

+ 10 - 0
docker/laravel/docker-compose.debug.yml

@@ -0,0 +1,10 @@
+version: '2.1'
+
+services:
+  d:
+    image: d
+    build:
+      context: .
+      dockerfile: Dockerfile
+    ports:
+      - 3000:3000

+ 8 - 0
docker/laravel/docker-compose.yml

@@ -0,0 +1,8 @@
+version: '2.1'
+
+services:
+  d:
+    image: d
+    build: .
+    ports:
+      - 3000:3000

+ 18 - 0
docker/laravel/laravel-nginx.conf

@@ -0,0 +1,18 @@
+server {
+    listen 80 default_server;
+    root /app/laravel/public;
+    index index.php index.html;
+
+    location / {
+        try_files $uri $uri/ /index.php?$query_string;
+    }
+
+    location ~ .*\.php(\/.*)*$ {
+        fastcgi_pass laravel:9000;
+        include fastcgi.conf;
+
+        # fastcgi_connect_timeout 300;
+        # fastcgi_send_timeout 300;
+        # fastcgi_read_timeout 300;
+        }
+}

+ 0 - 0
docker/laravel/package.json


+ 7 - 0
docker/postfix/Dockerfile

@@ -0,0 +1,7 @@
+FROM daocloud.io/library/centos:centos7
+LABEL Name=postfix Version=0.0.1
+RUN yum install postfix
+RUN sed -i "s|inet_protocols = all|inet_protocols = ipv4|g" /etc/postfix/main.cf
+RUN rm -Rf /var/lib/apt/lists/*
+
+CMD ["/usr/sbin/postfix", "start"]

+ 4 - 0
docker/postfix/README.md

@@ -0,0 +1,4 @@
+## docker-postfix
+
+本镜像安装postfix+postfixadmin,作为邮箱管理系统。
+

+ 25 - 0
docker/postfix/docker-compose.1.yml

@@ -0,0 +1,25 @@
+version: "3"
+
+services:
+  db:
+    image: mysql:5.7
+    restart: always
+    environment:
+      MYSQL_ROOT_PASSWORD: notSecureChangeMe
+      MYSQL_DATABASE: postfixadmin
+      MYSQL_USER: postfixadmin
+      MYSQL_PASSWORD: example
+
+  postfixadmin:
+    depends_on:
+      - db
+    image: postfixadmin
+    ports:
+      - 8000:80
+    restart: always
+    environment:
+      POSTFIXADMIN_DB_TYPE: mysqli
+      POSTFIXADMIN_DB_HOST: db
+      POSTFIXADMIN_DB_USER: postfixadmin
+      POSTFIXADMIN_DB_NAME: postfixadmin
+      POSTFIXADMIN_DB_PASSWORD: example

+ 10 - 0
docker/postfix/docker-compose.debug.yml

@@ -0,0 +1,10 @@
+version: '2.1'
+
+services:
+  d:
+    image: d
+    build:
+      context: .
+      dockerfile: Dockerfile
+    ports:
+      - 3000:3000

+ 28 - 0
docker/postfix/docker-compose.yml

@@ -0,0 +1,28 @@
+version: "2.1"
+
+services:
+  mysql:
+    image: daocloud.io/mysql:5.7.4
+    volumes:
+      - /data/db_data:/var/lib/mysql
+    restart: always
+    environment:
+      MYSQL_ROOT_PASSWORD: postfixadmin
+      MYSQL_DATABASE: postfix
+      MYSQL_USER: postfix
+      MYSQL_PASSWORD: 123456
+  postfix:
+    depends_on:
+      - mysql
+    image: jianboy/postfix
+
+    volumes:
+      - /data/web_data:/var/www/html
+    restart: always
+    environment:
+      POSTFIX_DB_HOST: mysql:3306
+      POSTFIX_DB_USER: postfix
+      POSTFIX_DB_PASSWORD: 123456
+    build: .
+    ports:
+      - 3000:3000

+ 1 - 1
docker/wordpress/docker-compose.yml

@@ -23,4 +23,4 @@ services:
      environment:
        WORDPRESS_DB_HOST: db:3306
        WORDPRESS_DB_USER: wordpress
-       WORDPRESS_DB_PASSWORD: 123456
+       WORDPRESS_DB_PASSWORD: 123456

+ 1 - 1
kubernetes/dao-2048/README.MD

@@ -17,4 +17,4 @@ kubectl delete pod dao-2048
 # 进入Pod
 kubectl exec -it dao-2048 /bin/sh
 
-```
+```

+ 11 - 0
kubernetes/guestbook/README.md

@@ -1,3 +1,14 @@
 ## guestbook
 
 
+```
+kubectl create -f redis-master-controller.yaml
+kubectl create -f redis-master-service.yaml
+
+kubectl create -f redis-slave-controller.yaml
+kubectl create -f redis-slave-service.yaml
+
+kubectl create -f frontend-controller.yaml
+kubectl create -f frontend-service.yaml
+
+```