미리 만들어둔 network는 test1net, volume은 testvol3을 활용하여 외부에 워드프레스 서비스를 제공한다. 단, db의 /var/lib/mysql은 testvol3에 마운트 된다. 또한 워드프레스는 외부 노출시 8001~8009번을 활용한다.
rapa@rapa:~/0822/wordpress$ docker volume create testvol3
testvol3
rapa@rapa:~/0822/wordpress$ cat docker-compose.yml
version: '3.7'
services:
wordpress:
image: wordpress
networks:
- test1net
links:
- "db:mysql"
ports:
- "8001-8009:80"
depends_on:
- db
environment:
- WORDPRESS_DB_PASSWORD=test123
- WORDPRESS_DB_USER=root
- WORDPRESS_DB_NAME=testdb
volumes:
- ./www:/var/www/html # 현재 디렉토리아래에 www를 하고 web의 /var/www/html과 연결(호스트의 특정 디렉토리-컨테이너의 특정 디렉토리)
restart: always
db:
image: mysql:5.7
networks:
- test1net
volumes:
- testvol2:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=test123
- MYSQL_DATABASE=testdb
networks:
test1net:
external: true
volumes:
testvol2:
external: true
rapa@rapa:~/0822/wordpress$ dc up --scale wordpress=2 -d
Creating wordpress_db_1 ... done
WARNING: The "wordpress" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.
Creating wordpress_wordpress_1 ... done
Creating wordpress_wordpress_2 ... done
rapa@rapa:~/0822/wordpress$ dc ps
Name Command State Ports
--------------------------------------------------------------------------------------------------
wordpress_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
wordpress_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8004->80/tcp,:::8004->80/
tcp
wordpress_wordpress_2 docker-entrypoint.sh apach ... Up 0.0.0.0:8005->80/tcp,:::8005->80/
tcp
localhost:8004와 localhost:8005가 있는데, 8005로 접속하면 8004로 연결된다.
8004로 들어와 설치할 때 접속한 주소가 홈페이지 주소로 잡히기 때문에 홈페이지의 기본주소인 8004로 넘겨줘서 똑같은 페이지를 동일하게 볼 수 있다.
rapa@rapa:~/0822/wordpress$ ls www
index.php wp-blog-header.php wp-content wp-login.php xmlrpc.php
license.txt wp-comments-post.php wp-cron.php wp-mail.php
readme.html wp-config-docker.php wp-includes wp-settings.php
wp-activate.php wp-config.php wp-links-opml.php wp-signup.php
wp-admin wp-config-sample.php wp-load.php wp-trackback.php
mkdir로 0822/testlab을 만든다.
해당 디렉토리 내에서 Dockerfile을 생성하여 이미지 testweb:1.0을 생성한다. 이미지는 아래의 내용을 포함해야 한다. (도커 로그인 되어있는 지 확인)
docker-compose 파일을 작성한다. 아래의 내용을 포함해야 한다.
web
db → mysql:5.7을 사용
두 서비스 모두 (미리 만들어 두어야 함)testnetwork1에 연결 되어야 한다.
또한, 생성된 컨테이너는 linux 재부팅 시 자동으로 활성화 되어야 한다.(restart=always) p235
db는 미리 생성해두었던 testvolume1에 연결 되어야 하는데, /var/lib/mysql로 마운트 된다.
docker container run을 활용하여 cadvisor를 설치하고, 이를 통해 앞서 만들어 두었던 컨테이너들을 확인할 수 있어야 한다. 물론 cadvisor도 testnetwork1에 연결되어있어야 한다. (이 cadvisor은 compose의 영향을 받으면 안됨) p87
디렉토리 만들기
- mkdir로 0822/testlab을 만든다.
rapa@rapa:~/0822$ mkdir testlab
rapa@rapa:~/0822$ cd testlab
network, volume 만들기
- network 만들기
docker network create testnetwork1
docker volume create testvolume1
Dockerfile 만들기
touch Dockerfile
vi Dockerfile
curl -o index.html https://www.naver.com
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get -y install nginx
EXPOSE 80
ADD index.html /var/www/html/index.html
CMD ["nginx","-g","daemon off;"]
docker-compose.yml 파일 만들기
touch docker-compose.yml
vi docker-compose.yml
version: '3.7'
services:
web:
build: .
image: testweb:1.0
networks:
- testnetwork1
links:
- "db:mysql"
depends_on:
- db
environment:
- DB_NAME=testdb
- DB_USER=root
- DB_PASSWORD=test123
ports:
- "8881-8889:80"
db:
image: mysql:5.7
networks:
- testnetwork1
volumes:
- testvolume1:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=test123
- MYSQL_DATABASE=testdb
networks:
testnetwork1:
external: true
volumes:
testvolume1:
external: true
docker-compose up -d
cadvisor 생성
rapa@rapa:~/0822/testlab$ docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker.ro --publish=9559:8080 --detach=true --name=cadvisor --net testnetwork1 google/cadvisor:latest
3970c936f2ad12bad516bcd6b231b0cf5a3913b90f05ec53d8df02b0be47c510
확인하기
- 컨테이너 test1lab_web_1의 환경변수가 잘 설정 되어있는 지 확인
rapa@rapa:~/0822/testlab$ docker container exec testlab_web_1 env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=2f2b3a695952
DB_NAME=testdb
DB_USER=root
DB_PASSWORD=test123
HOME=/root