Deploy a LNMP environment using docker-compose
1. Create relevant compose storage directory
< 5 docker-test - [root]: >Mkdir-p / apps/compose_lnmp/nginx
< 5 docker-test - [root]: >Cd! $
< 5 docker-test - [root]: /apps/compose_lnmp/nginx >2. Download the nginx package and create dockerfile
< 6 docker-test - [root]: /apps/compose_lnmp/nginx ># wget http://nginx.org/download/nginx-1.14.2.tar.gz
< 7 docker-test - [root]: /apps/compose_lnmp/nginx ># vim DockerfileFROM centos:7MAINTAINER gujiworkRUN yum install-y gcc gcc-c++ make openssl-devel pcre-develADD nginx-1.14.2.tar.gz / tmpRUN cd / tmp/nginx-1.14.2 & &. / configure-- prefix=/usr/local/nginx & & make-j 4 & & make installCOPY nginx.conf / usr/local/nginx/confEXPOSE 80WORKDIR / usr/local/nginxCMD [". / sbin/nginx", "- g", "daemon off;"]
3. Nginx.conf is used in this. Put it in the compose_lnmp/nginx directory and change fastcgi_pass 127.0.0.1 fastcgi_pass 9000 to php container name, fastcgi_pass php-cgi:9000.
# user nginx;worker_processes 2, worker_connections workerboards, computers, computers 0101, 10, 10, worker_connections, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, worker_connections, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, # log_format main'$remote_addr-$remote_user [$time_local] "$request" #'$status $body_bytes_sent "$http_referer" #'"$http_user_agent" $http_x_forwarded_for "; # access_log logs/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on Server_names_hash_bucket_size 128; server_names_hash_max_size 512; client_header_timeout 15s; client_body_timeout 15s; send_timeout 60s; # tcp_nopush on; # keepalive_timeout 0; keepalive_timeout 65; # gzip on; server {listen 80; server_name localhost; # charset koi8-r; # access_log logs/host.access.log main Location / {root html; index index.html index.htm;} # error_page 404 / 404.html; # redirect server error pages to the static page / 50x.html # error_page 500502503504 / 50x.html; location = / 50x.html {root html } # proxy the PHP scripts to Apache listening on 127.0.0.1 location 80 # location ~. Php$ {# proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1 php$ 9000 # location ~. Php$ {root html Fastcgi_pass php-cgi:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME / scripts$fastcgi_script_name; include fastcgi_params;} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # # location ~ /\ .ht {# deny all #}} # another virtual host using mix of IP-, name-, and port-based configuration # # server {# listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / {# root html; # index index.html index.htm #} #} # HTTPS server # # server {# listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers high # location / {# root html; # index index.html index.htm; #} #} include vhost/*.conf;}
4. Create a mysql directory and persist the data and configuration files. Here we use the official image of mysql, so there is no need to write dockerfile.
< 39 docker-test - [root]: /apps/compose_lnmp ># tree mysql/mysql/ |-- conf | `--my.cnf`-- data
< 40 docker-test - [root]: /apps/compose_lnmp ># cat mysql/conf/my.cnf [mysqld] user=mysqlport=3306datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socketpid-file=/var/run/mysql/mysql.pidlog_error=/var/log/mysql/error.logcharacter_set_server = utf8max_connections=3600
5. The creation of php directory and dockerfile,php.ini mainly changed the time zone to shanghai
< 49 docker-test - [root]: /apps/compose_lnmp ># tree php/php/ |-- Dockfile |-- php- 5.6.31.tar.gz`-- php.ini
< 50 docker-test - [root]: /apps/compose_lnmp ># cat php/Dockfile FROM centos:7MAINTAINER gujiworkRUN yum install-y gcc gcc-c++ gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel makeADD php-5.6.31.tar.gz / tmp/RUN cd / tmp/php-5.6.31 & &\. / configure-prefix=/usr/local/php\-with-config-file-path=/usr/local/php/etc\-with-mysql-with-mysqli\-with -openssl-- with-zlib-- with-curl-- with-gd\-- with-jpeg-dir-- with-png-dir-- with-iconv\-- enable-fpm-- enable-zip-- enable-mbstring & &\ make-j 4 & & make install & &\ cp / usr/local/php/etc/php-fpm.conf.default / usr/local/php/etc/php-fpm.conf & &\ sed-I "s / 127.0.0.1 cp 0.0.0 / "/ usr/local/php/etc/php-fpm.conf & &\ cp. / sapi/fpm/init.d.php-fpm / etc/init.d/php-fpm & &\ chmod + x / etc/init.d/php-fpm COPY php.ini / usr/local/php/etcEXPOSE 9000CMD / etc/init.d/php-fpm start & & tail-F / var/log/messages
6. Create docker-compose maintenance files
< 53 docker-test - [root]: /apps/compose_lnmp ># cat docker-compose.yml version: '3'services: nginx: hostname: nginx build: context:. / nginx dockerfile: Dockerfile ports:-80:80 links:-php:php-cgi volumes: -. / wwwroot:/usr/local/nginx/html php: hostname: php build:. / php links:-mysql:mysql-db volumes: -. / wwwroot: / usr/local/nginx/html mysql: hostname: mysql image: mysql:5.6 ports:-3306 volumes: -. / mysql/conf:/etc/mysql/conf.d -. / mysql/data:/var/lib/mysql # command:-- character-set-server=utf8 environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: wordpress MYSQL_USER: user MYSQL_PASSWORD: user123
7. Create a web mount directory. The overall directory structure is as follows
< 56 docker-test - [root]: /apps/compose_lnmp ># tree.. |-- docker-compose.yml |-- mysql | |-- conf | | `--my.cnf |`-- data |-- nginx | |-- Dockerfile | |-- nginx-1.14.2.tar.gz | `--nginx.conf |-- php | |-- Dockfile | |-- php-5.6.31.tar.gz |`-- php.ini`-- wwwroot6 directories, 8 files
8. Execute build to build an image
< 81 docker-test - [root]: /apps/compose_lnmp ># docker-compose build
9. The presence of success indicates that the construction is successful
Make [1]: Leaving directory `/ tmp/nginx-1.14.2'Removing intermediate container b7fb79c4671eMurray-> b756345aac5bStep 6Company9: COPY nginx.conf / usr/local/nginx/conf--- > cb180351db65Step 7lash 9: EXPOSE 80Murray-> Running in 20805a3b58a5Removing intermediate container 20805a3b58a5lur-> 9f75c3834969Step 8lash 9: WORKDIR / usr/local/nginx--- > Running in 6abf5341ee7bRemoving intermediate container 6abf5341ee7bWhue-> 0cb88354c8b8Step 9Univer 9: CMD [". / sbin/nginx", "- g", "daemon off" "]-- > Running in a2db489f2b5bRemoving intermediate container a2db489f2b5b Murray-> 76ae0759f3b1Successfully built 76ae0759f3b1Successfully tagged compose_lnmp_nginx:latest
10. Start the service test
< 82 docker-test - [root]: /apps/compose_lnmp ># docker-compose up-dCreating network "compose_lnmp_default" with the default driverPulling mysql (mysql:5.6)... 5.6: Pulling from library/mysql177e7ef0df69: Pull completecac25352c4c8: Pull complete8585afabb40a: Pull complete1e4af4996053: Pull completec326522894da: Pull complete50ec9776c6b3: Pull completeb81a89945365: Pull complete80f5ab6567ca: Pull complete5caf5e4c5eb0: Pull complete9295ceea71e2: Pull completefb029976ca26: Pull completeCreating compose_lnmp_mysql_1_32333e982f89. DoneCreating compose_lnmp_php_1_856b9f701287... DoneCreating compose_lnmp_nginx_1_c5360c9dc627... Done
< 144 docker-test - [root]: /apps/compose_lnmp/wwwroot ># echo "111" > index.html# Test
< 144 docker-test - [root]: /apps/compose_lnmp/wwwroot ># curl localhost/111