07-31
0
Docker搭建 nginx+php+mysql+redis
一.创建 /app/www /app/docker_files
二. /app/www 项目目录
三.docker配置目录
1.nginx 创建目录 /app/www/nginx /app/www/nginx/
Dockerfile
from nginx
COPY ./conf/conf.d/ /etc/nginx/conf.d/
COPY ./conf/certs/ /etc/nginx/certs/
COPY ./conf/nginx.conf /etc/nginx/nginx.conf
2.php 创建目录 /app/docker_files/php
Dockerfile
FROM php:8.0-fpm
ENV WWW_PATH "/www"
RUN mkdir ${WWW_PATH}
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN apt-get clean
RUN pecl install redis-5.3.7 && docker-php-ext-enable redis
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
RUN apt-get install -y \
zlib1g-dev \
libzip-dev
RUN docker-php-ext-install zip
RUN docker-php-ext-install pdo pdo_mysql
RUN docker-php-ext-install bcmath
RUN apt-get install -y procps
RUN apt-get install -y vim
RUN apt-get install -y supervisor
WORKDIR ${WWW_PATH}
RUN php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" && php composer-setup.php && php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer
RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer
3.redis 创建目录/app/docker_files/redis
Dockerfile
FROM redis
COPY ./redis.conf /usr/local/etc/redis/redis.conf
4.mysql 创建目录 /app/docker_files/mysql /app/docker_files/mysql/conf /app/docker_files/mysql/data
Dockerfile
FROM mysql:5.7
COPY conf/ /etc/mysql/conf.d/
COPY data/ /var/lib/mysql/
EXPOSE 3306
5. docker-comose.yml 配置
version: '3'
services:
web:
build: './nginx'
image: 'nginx-server:1.0'
container_name: 'nginx-server'
ports:
- "80:80"
- "443:443"
volumes:
- '/app/docker_files/nginx/conf/nginx.conf:/etc/nginx/nginx.conf'
- '/app/docker_files/nginx/conf/conf.d:/etc/nginx/conf.d'
- '/app/docker_files/nginx/conf/certs:/etc/nginx/certs'
- '/app/www:/usr/share/nginx/html'
networks:
- lnmp
php:
build: './php'
image: 'php-server:1.0'
container_name: 'php-server'
ports:
- "9000:9000"
volumes:
- "/app/www:/www"
networks:
- lnmp
redis:
build: './redis'
image: 'redis-server:1.0'
container_name: 'redis-server'
ports:
- "6379:6379"
networks:
- lnmp
db:
build: './mysql'
image: 'db-server:1.0'
container_name: 'db-server'
ports:
- "3366:3306"
volumes:
- "/app/docker_files/mysql/conf:/etc/mysql/conf.d"
- "/app/docker_files/mysql/data:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
networks:
- lnmp
networks:
lnmp:
driver: bridge