Discuz3.3搭建在Docker环境
ubuntu14安装dockerDiscuz_X3.3构建docker imageDockerfile`FROM php:5.6-apacheRUN echo "Asia/Shanghai" > /etc/timezone;dpkg-reconfigure -f noninteractive tzdataRUN apt-get update && apt-get install -y
·
ubuntu14
安装docker
Discuz_X3.3构建docker image
- Dockerfile
`FROM php:5.6-apache
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/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"]
`
- docker-entrypoint.sh
`#!/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`
- docker build -t discuz .
- docker run -d discuz -p 8090:80
- mysql 构建docker image
MySQL容器
MySQL继承自官方的MySQL5.6镜像,Dockerfile仅有一行,无需做任何额外处理,因为普通需求官方都已经在镜像中实现了,因此Dockerfile的内容为:
FROM mysql:5.6
在项目根目录下运行
docker build -t discuz/mysql ./mysql
会自动下载并构建镜像,这里我们将其命名为discuz/mysql。
由于容器运行结束时会丢弃所有数据库数据,为了不用每次都要导入数据,我们将采用挂载的方式持久化MySQL数据库,官方镜像默认将数据库存放在/var/lib/mysql,同时要求容器运行时必须通过环境变量设置一个管理员密码,因此可以使用以下指令运行容器:
docker run -p 3306:3306 -v ~/opt/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -it eva/mysql
通过上面的指令,我们将本地的3306端口绑定到容器的3306端口,将容器内的数据库持久化到本地的~/opt/data/mysql,并且为MySQL设置了一个root密码123456
docker exec -ti focused_haibt /bin/bash
交互模式,进入discuz,
更多推荐
已为社区贡献1条内容
所有评论(0)