version: "3.8"
services:
nginx:
container_name: "nginx"
image: nginx:latest
#重启策略:
#no,默认策略,在容器退出时,不重启容器;
#on-failure,在容器非正常退出时(退出状态非0),才会重启容器
#on-failure:3,在容器非正常退出时重启容器,最多重启3次
#always,在容器退出时,总是重启容器
#unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
#端口映射(宿主机8080->nginx容器80,可以映射多个,比如443端口)
ports:
- "80:80"
- "443:443"
environment:
- TZ=Asia/Shanghai
#数据卷挂载
volumes:
- "/usr/local/nginx/conf.d:/etc/nginx/conf.d"
- "/usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf"
- "/usr/local/nginx/log:/var/log/nginx"
- "/usr/local/nginx/html:/usr/share/nginx/html"
php:
container_name: "php7.3"
# 注意,在version 1里同时使用image和build是不允许的,version 2则可以,如果同时指定了两者,会将build出来的镜像打上名为image标签。
build: ./php-extension
image: php7.3-app
ports:
- "9000:9000"
volumes:
- "/home/www/phpProject:/var/www/html"
- "/usr/local/php7.3/etc:/usr/local/etc"
- "/usr/local/php7.3/log/:/var/log/php/"
stdin_open: true
tty: true
#links:
# - "mysql"
# 设置时区
environment:
- TZ=Asia/Shanghai
mysql:
container_name: "mysql8"
image: mysql:8
#mysql的端口
ports:
- "3306:3306"
#数据卷挂载设置
volumes:
- "/usr/local/mysql8/data:/var/lib/mysql"
- "/usr/local/mysql8/etc:/etc/mysql"
- "/usr/local/mysql8/logs:/data/mysql/logs"
environment:
- TZ=Asia/Shanghai # 设置时区
#设置mysql的密码
- MYSQL_ROOT_PASSWORD=123456
redis:
container_name: "redis"
image: redis
ports:
- "6379:6379"
volumes:
- "/usr/local/redis/etc:/usr/local/etc/redis"
- "/usr/local/redis/data:/data"
command:
#执行命令(设置密码和持久化)
redis-server /usr/local/etc/redis/redis.conf --requirepass 123456 --appendonly yes
# redis-server /usr/local/etc/redis/redis.conf
environment:
- TZ=Asia/Shanghai # 设置时区
networks:
default:
name: mynet
在根目录下创建./php-extension/Dockerfile
FROM php:7.3-fpm
# 安装 php 扩展
RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list && rm -Rf /var/lib/apt/lists/* && cat /etc/apt/sources.list
RUN apt-get update -y
RUN docker-php-ext-install -j$(nproc) mysqli pdo_mysql shmop iconv sockets calendar
RUN apt-get install -y --no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
&& rm -r /var/lib/apt/lists/* \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& pecl install redis swoole \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis swoole \
&& apt-get clean && rm -rf /var/cache/apt/*