docker compose运维phpmyadmin、mysql和nginx

一、安装docker

1.配置用户组

# 新建用户组
groupadd docker
 
# 将登录用户加入到docker用户组中
usermod -aG docker $USER
 
# 更新用户组
newgrp docker

2.下载docker

mkdir -p ~/tools/docker
cd ~/tools/docker
wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.18.tgz
mkdir install-package
tar -xf docker-20.10.18.tgz -C install-package --strip-components=1
tar -xf docker-20.10.18.tgz -C /usr/local/bin --strip-components=1
mkdir -p ~/data/docker

3. 编辑docker.service文件

vim /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd -H unix://var/run/docker.sock --data-root=/root/data/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
 
StartLimitBurst=3
 
StartLimitInterval=60s
 
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
 
TasksMax=infinity
 
Delegate=yes
 
KillMode=process
 
[Install]
WantedBy=multi-user.target

4.启动服务

systemctl daemon-reload
systemctl start docker
systemctl enable docker
reboot

二、安装docker compose

 1.按程序方式安装

curl -SL https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +777 /usr/local/bin/docker-compose
docker-compose version

2.按插件方式安装

DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
docker compose version

三、编辑文件

1.编辑yml文件

vim phpmyadmin-5.20.yml
version: '3.9'

networks:
  data-link:
    driver: bridge
  php-link:
    driver: bridge

volumes:
  phpmyadmin:
  db:

services:
  web:
    image: nginx:1.23.1
    container_name: nginx
    restart: always
    depends_on:
      - app
    ports:
      - target: 80
        published: 8080
        protocol: tcp
        mode: host
    volumes:
      - type: bind
        source: ./default.conf
        target: /etc/nginx/conf.d/default.conf
        volume:
          nocopy: true
    volumes_from:
      - app
    networks:
      - php-link
      
  app:
    image: phpmyadmin:5.2.0-fpm
    container_name: phpmyadmin
    restart: always
    depends_on:
      - db
    volumes:
      - type: volume
        source: phpmyadmin
        target: /var/www/html
        volume:
          nocopy: false
    networks:
      - php-link
      - data-link
    env_file:
      - .env

  db:
    image: mysql:5.7.39-oracle
    container_name: mysql
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - type: volume
        source: db
        target: /var/lib/mysql
        volume:
          nocopy: false
    networks:
      - data-link
    env_file:
      - .env

2.编辑env文件

vim .env
#Set Mysql/Phpmyadmin environment
MYSQL_ROOT_PASSWORD=12345678
MYSQL_PASSWORD=87654321
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud

3.编辑default. conf

vim default.conf
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    location / {
        root   /var/www/html;
        index  index.php index.html index.htm;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /var/www/html;
        fastcgi_pass   app:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

}

五、网络运维

1.运行 

docker compose -f phpmyadmin-5.20.yml up -d
docker ps -a
docker volume list

2. 网站测试

http://IP:8080 # IP替换为服务器ip地址

 3.停止服务

docker compose -f phpmyadmin-5.20.yml down
docker volume prune
docker ps -a
docker volume list

你可能感兴趣的:(运维,docker,mysql)