{"id":357,"date":"2023-07-31T10:06:49","date_gmt":"2023-07-31T02:06:49","guid":{"rendered":"https:\/\/www.aqrboyblog.top\/?p=357"},"modified":"2023-07-31T10:06:50","modified_gmt":"2023-07-31T02:06:50","slug":"docker%e6%90%ad%e5%bb%ba-nginxphpmysqlredis","status":"publish","type":"post","link":"https:\/\/www.aqrboyblog.top\/?p=357","title":{"rendered":"Docker\u642d\u5efa nginx+php+mysql+redis"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u4e00.\u521b\u5efa \/app\/www  \/app\/docker_files<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c. \/app\/www \u9879\u76ee\u76ee\u5f55<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09.docker\u914d\u7f6e\u76ee\u5f55<\/h2>\n\n\n\n<p>1.nginx \u521b\u5efa\u76ee\u5f55 \/app\/www\/nginx    \/app\/www\/nginx\/<\/p>\n\n\n\n<p>Dockerfile<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from nginx\nCOPY .\/conf\/conf.d\/ \/etc\/nginx\/conf.d\/\nCOPY .\/conf\/certs\/ \/etc\/nginx\/certs\/\nCOPY .\/conf\/nginx.conf \/etc\/nginx\/nginx.conf<\/code><\/pre>\n\n\n\n<p>2.php \u521b\u5efa\u76ee\u5f55 \/app\/docker_files\/php<\/p>\n\n\n\n<p>Dockerfile<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FROM php:8.0-fpm\r\n\r\nENV WWW_PATH \"\/www\"\r\n\r\nRUN mkdir ${WWW_PATH}\r\n\r\nRUN  sed -i s@\/archive.ubuntu.com\/@\/mirrors.aliyun.com\/@g \/etc\/apt\/sources.list\r\nRUN  sed -i s@\/deb.debian.org\/@\/mirrors.aliyun.com\/@g \/etc\/apt\/sources.list\r\nRUN  apt-get clean\r\n\r\n\r\nRUN pecl install redis-5.3.7 &amp;&amp; docker-php-ext-enable redis\r\n\r\nRUN apt-get update &amp;&amp; apt-get install -y \\\r\n\t\tlibfreetype6-dev \\\r\n\t\tlibjpeg62-turbo-dev \\\r\n\t\tlibpng-dev \\\r\n\t&amp;&amp; docker-php-ext-configure gd --with-freetype --with-jpeg \\\r\n\t&amp;&amp; docker-php-ext-install -j$(nproc) gd\r\n\r\nRUN apt-get install -y \\\r\n    zlib1g-dev \\\r\n    libzip-dev\r\n\r\nRUN docker-php-ext-install zip\r\nRUN docker-php-ext-install pdo pdo_mysql\r\nRUN docker-php-ext-install bcmath\r\n\r\nRUN apt-get install -y procps\r\nRUN apt-get install -y vim\r\nRUN apt-get install -y supervisor\r\n\r\nWORKDIR ${WWW_PATH}\r\n\r\nRUN php -r \"copy('https:\/\/install.phpcomposer.com\/installer', 'composer-setup.php');\" &amp;&amp; php composer-setup.php &amp;&amp; php -r \"unlink('composer-setup.php');\"\r\n\r\nRUN mv composer.phar \/usr\/local\/bin\/composer\r\n\r\nRUN composer config -g repo.packagist composer https:\/\/mirrors.aliyun.com\/composer\n\r<\/code><\/pre>\n\n\n\n<p>3.redis \u521b\u5efa\u76ee\u5f55\/app\/docker_files\/redis<\/p>\n\n\n\n<p>Dockerfile<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FROM redis\r\nCOPY .\/redis.conf \/usr\/local\/etc\/redis\/redis.conf\r<\/code><\/pre>\n\n\n\n<p>4.mysql \u521b\u5efa\u76ee\u5f55 \/app\/docker_files\/mysql \/app\/docker_files\/mysql\/conf  \/app\/docker_files\/mysql\/data<\/p>\n\n\n\n<p>Dockerfile<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FROM mysql:5.7\r\n\r\nCOPY conf\/ \/etc\/mysql\/conf.d\/\r\nCOPY data\/ \/var\/lib\/mysql\/\r\n\r\nEXPOSE 3306\n\r<\/code><\/pre>\n\n\n\n<p>5. docker-comose.yml \u914d\u7f6e<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">version: '3'\nservices:\n  web:\n    build: '.\/nginx'\n    image: 'nginx-server:1.0'\n    container_name: 'nginx-server'\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - '\/app\/docker_files\/nginx\/conf\/nginx.conf:\/etc\/nginx\/nginx.conf'\n      - '\/app\/docker_files\/nginx\/conf\/conf.d:\/etc\/nginx\/conf.d'\n      - '\/app\/docker_files\/nginx\/conf\/certs:\/etc\/nginx\/certs'\n      - '\/app\/www:\/usr\/share\/nginx\/html'\n    networks:\n      - lnmp\n  php:\n    build: '.\/php'\n    image: 'php-server:1.0'\n    container_name: 'php-server'\n    ports:\n      - \"9000:9000\"\n    volumes:\n      - \"\/app\/www:\/www\"\n    networks:\n      - lnmp\n  redis:\n    build: '.\/redis'\n    image: 'redis-server:1.0'\n    container_name: 'redis-server'\n    ports:\n      - \"6379:6379\"\n    networks:\n      - lnmp\n  db:\n    build: '.\/mysql'\n    image: 'db-server:1.0'\n    container_name: 'db-server'\n    ports:\n      - \"3366:3306\"\n    volumes:\n      - \"\/app\/docker_files\/mysql\/conf:\/etc\/mysql\/conf.d\"\n      - \"\/app\/docker_files\/mysql\/data:\/var\/lib\/mysql\"\n    restart: always\n    environment:\n      MYSQL_ROOT_PASSWORD: 123456\n    networks:\n      - lnmp\nnetworks:\n  lnmp:\n    driver: bridge<\/pre>\n","protected":false},"excerpt":{"rendered":"<p class=\"text-justify\">\u4e00.\u521b\u5efa \/app\/www \/app\/doc [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-357","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.aqrboyblog.top\/index.php?rest_route=\/wp\/v2\/posts\/357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.aqrboyblog.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aqrboyblog.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aqrboyblog.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aqrboyblog.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=357"}],"version-history":[{"count":4,"href":"https:\/\/www.aqrboyblog.top\/index.php?rest_route=\/wp\/v2\/posts\/357\/revisions"}],"predecessor-version":[{"id":361,"href":"https:\/\/www.aqrboyblog.top\/index.php?rest_route=\/wp\/v2\/posts\/357\/revisions\/361"}],"wp:attachment":[{"href":"https:\/\/www.aqrboyblog.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=357"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aqrboyblog.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=357"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aqrboyblog.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}