docker搭建php环境
dockerfile
FROM php:8.1.7-fpm
EXPOSE 22
COPY ./start_ssh.sh /root/start_ssh.sh
RUN apt-get update \
&& apt-get install -y dialog openssh-server ssh vim supervisor\
&& apt-get install -y \
--no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev curl \
&& apt-get install -y zlib1g-dev \
&& apt-get install -y libzip-dev \
&& apt install -y openssl \
&& apt install -y libssl-dev \
&& rm -r /var/lib/apt/lists/* \
&& docker-php-ext-configure gd \
&& docker-php-ext-install -j$(nproc) gd opcache pdo_mysql gettext sockets \
&& docker-php-ext-install zip \
&& docker-php-ext-install pcntl \
&& pecl install redis \
&& pecl install swoole \
&& pecl install mongodb \
&& docker-php-ext-enable redis swoole mongodb\
&& php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" \
&& php composer-setup.php \
&& mv composer.phar /usr/local/bin/composer \
&& composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ \
&& composer selfupdate\
docker-compose.yml
version: '3'
services:
admin-nignx: #后台nginx
container_name: admin-nginx
image: nginx:latest
restart: always
tty: true
networks: #网络
admin:
ipv4_address: 172.19.0.2
volumes:
- \\wsl.localhost\Ubuntu-20.04\docker\nginx\admin\conf\nginx.conf:/etc/nginx/nginx.conf
- \\wsl.localhost\Ubuntu-20.04\docker\nginx\admin\logs:/var/log/nginx
- \\wsl.localhost\Ubuntu-20.04\docker\php\www\admin:/var/www/html
- \\wsl.localhost\Ubuntu-20.04\docker\nginx\admin\conf\conf.d:/etc/nginx/conf.d
privileged: true
ports:
- 8080:80
user: root
admin-php: #后台php
container_name: admin-php
image: php:myphp #镜像
restart: always #重启
tty: true
networks: #网络
admin:
ipv4_address: 172.19.0.3
volumes: #数据卷
- \\wsl.localhost\Ubuntu-20.04\docker\php\www\admin:/var/www/html
ports: #暴漏端口
- 8081:9000
privileged: true
user: root
#entrypoint: ['service ssh start']
command: /bin/bash -c " service ssh start && service supervisor start && php-fpm" #加入开机启动
api-nignx: #接口nginx
container_name: api-nginx
image: nginx:latest
restart: always
tty: true
networks: #网络
admin:
ipv4_address: 172.19.0.5
volumes:
- \\wsl.localhost\Ubuntu-20.04\docker\nginx\api\conf\nginx.conf:/etc/nginx/nginx.conf
- \\wsl.localhost\Ubuntu-20.04\docker\nginx\api\logs:/var/log/nginx
- \\wsl.localhost\Ubuntu-20.04\docker\php\www\sghome_pro:/var/www/html
- \\wsl.localhost\Ubuntu-20.04\docker\nginx\api\conf\conf.d:/etc/nginx/conf.d
privileged: true
ports:
- 8082:80
user: root
api-php: #接口php
container_name: api-php
image: php:myphp #镜像
restart: always #重启
tty: true
networks: #网络
admin:
ipv4_address: 172.19.0.6
volumes: #数据卷
- \\wsl.localhost\Ubuntu-20.04\docker\php\www\sghome_pro:/var/www/html
ports: #暴漏端口
- 8083:9000
privileged: true
user: root
command: /bin/bash -c " service ssh start && service supervisor start && php-fpm" #加入开机启动
redis: #redis
container_name: redis5
image: redis:latest
restart: always
tty: true
networks: #网络
admin:
ipv4_address: 172.19.0.7
volumes: #数据卷
- \\wsl.localhost\Ubuntu-20.04\docker\redis\redis.conf:/etc/redis/redis.conf
- \\wsl.localhost\Ubuntu-20.04\docker\redis\data:/data
privileged: true
user: root
ports:
- 6379:6379
command: /bin/bash -c " redis-server /etc/redis/redis.conf --appendonly yes " #开机启动命令
mysql:
container_name: mysql8 #容器名称
image: mysql:latest
restart: always
privileged: true
user: root
tty: true
environment:
MYSQL_PASSWORD: root
networks:
admin:
ipv4_address: 172.19.0.8
volumes:
- \\wsl.localhost\Ubuntu-20.04\docker\mysql\data:/var/lib/mysql:rw
- \\wsl.localhost\Ubuntu-20.04\docker\mysql\logs:/var/log/mysql:rw
- \\wsl.localhost\Ubuntu-20.04\docker\mysql\conf\my.cnf:/etc/mysql/my.cnf:rw
ports:
- 3309:3306
networks:
admin:
ipam:
config:
- subnet: 172.19.0.0/16
gateway: 172.19.0.1
参考 :github.com/shunhua/dnmp