Data Engineering/Docker

[Docker] Docker Compose

snoony 2024. 6. 4. 17:03
[root@localhost ~]# curl -L "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 60.0M  100 60.0M    0     0  4287k      0  0:00:14  0:00:14 --:--:-- 4278k
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose
[root@localhost ~]# docker-compose version
Docker Compose version v2.27.0

compose.yml

services:
   db:
     image: mariadb:10.6.4-focal
   wordpress:
     image: wordpress:latest
     ports:
       - 80:80
     restart: always

 

[root@localhost ~]# mkdir wp2
[root@localhost ~]# cd wp2
[root@localhost wp2]# gedit compose.yml
[root@localhost wp2]# ls
compose.yml
[root@localhost wp2]# docker compose up -d
[+] Running 11/11
 ✔ db Pulled                                                                                                     24.1s 
   ✔ 7b1a6ab2e44d Pull complete                                                                                   5.8s 
   ✔ 034655750c88 Pull complete                                                                                   5.8s 
   ✔ f0b757a2a0f0 Pull complete                                                                                   6.2s 
   ✔ 5c37daf8b6b5 Pull complete                                                                                   6.5s 
   ✔ b4cd9409b0f6 Pull complete                                                                                   6.5s 
   ✔ dbcda06785eb Pull complete                                                                                   7.0s 
   ✔ a34cd90f184c Pull complete                                                                                   7.0s 
   ✔ fd6cef4ce489 Pull complete                                                                                   7.0s 
   ✔ 3cb89a1550ea Pull complete                                                                                  14.3s 
   ✔ df9f153bd930 Pull complete                                                                                  14.3s 
[+] Running 3/3
 ✔ Network wp2_default        Created                                                                             0.9s 
 ✔ Container wp2-wordpress-1  Started                                                                             2.4s 
 ✔ Container wp2-db-1         Started                                                                             2.4s 
[root@localhost wp2]#

 

docker-compose.yml

version: '2'
services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - wp_data:/var/www/html
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:
    wp_data:
[root@localhost wp3]# ls
db_data  docker-compose.yml  wp_data
[root@localhost wp3]# docker compose up -d
WARN[0000] /root/wp3/docker-compose.yml: `version` is obsolete 
[+] Running 2/2
 ✔ Container wp3-db-1         Running                                                                             0.0s 
 ✔ Container wp3-wordpress-1  Started                                                                             0.9s 
[root@localhost wp3]#

Wordpress 실행

[root@localhost wp3]# docker ps
CONTAINER ID   IMAGE              COMMAND                   CREATED          STATUS          PORTS                               NAMES
687b10243d01   wordpress:latest   "docker-entrypoint.s…"   25 minutes ago   Up 4 minutes    0.0.0.0:80->80/tcp, :::80->80/tcp   wp3-wordpress-1
ceaa8c944f68   mysql:8.0.27       "docker-entrypoint.s…"   25 minutes ago   Up 25 minutes   3306/tcp, 33060/tcp                 wp3-db-1

[root@localhost wp3]# docker exec -it wp3-db-1 /bin/bash
root@ceaa8c944f68:/# mysql -uwordpress -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 51
Server version: 8.0.27 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| wordpress          |
+--------------------+
2 rows in set (0.00 sec)

mysql> use wordpress;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------------+
| Tables_in_wordpress   |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_termmeta           |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
12 rows in set (0.00 sec)

mysql>

wordpress의 글들이 저장된 mysql에 접속해 확인할 수 있다.

docker ps 명령어

[root@localhost wp3]# docker ps
CONTAINER ID   IMAGE              COMMAND                   CREATED          STATUS          PORTS                               NAMES
c775ecdc257d   wordpress:latest   "docker-entrypoint.s…"   13 minutes ago   Up 13 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   wp3-wordpress-1
ceaa8c944f68   mysql:8.0.27       "docker-entrypoint.s…"   51 minutes ago   Up 13 minutes   3306/tcp, 33060/tcp                 wp3-db-1
[root@localhost wp3]# docker ps -a
CONTAINER ID   IMAGE                  COMMAND                   CREATED             STATUS                         PORTS                               NAMES
c775ecdc257d   wordpress:latest       "docker-entrypoint.s…"   13 minutes ago      Up 13 minutes                  0.0.0.0:80->80/tcp, :::80->80/tcp   wp3-wordpress-1
ceaa8c944f68   mysql:8.0.27           "docker-entrypoint.s…"   51 minutes ago      Up 13 minutes                  3306/tcp, 33060/tcp                 wp3-db-1
02e03173a20e   mariadb:10.6.4-focal   "docker-entrypoint.s…"   About an hour ago   Exited (1) About an hour ago                                       wp2-db-1
0f0f3a60480c   mysql:5.7              "docker-entrypoint.s…"   4 hours ago         Exited (0) 2 hours ago                                             mysql
f7aeae360aba   wordpress              "docker-entrypoint.s…"   4 hours ago         Exited (0) 2 hours ago                                             tender_curran
4734c559bbf3   wordpress              "docker-entrypoint.s…"   4 hours ago         Created                                                            vigorous_mayer
[root@localhost wp3]# docker rm 47 f7 0f 02
47
f7
0f
02

 

docker ps : 현재 실행중인 컨테이너 확인

docker ps -a : 현재 실행중이지 않은 컨테이너들도 확인

docker stop : 컨테이너 실행 중지

docker rm : 컨테이너 삭제