DOCKER 학습 노트 4 인식 DockerCompose 다 중 용기 편성
지난 절 학습 을 통 해 리 눅 스 환경 에서 Docker 를 구축 하고 Springboot 프로젝트 를 배치 하 는 방법 을 배 웠 고 성공 적 으로 달 렸 습 니 다. 물론 생산 환경 에서 백 엔 드 웹 프로젝트 뿐만 아니 라 Nginx 를 역방향 대리 로 해 야 합 니 다.데이터베이스 도 하나의 용기 에 따로 배치 해 야 한다. 만약 우리 가 이전에 배 운 것 처럼 하나하나 배치 해 야 한다 면 매우 번 거 롭 지 않 겠 는가.
그래서 우 리 는 이 기능 을 실현 하 는 데 도움 을 줄 것 이 필요 하 다. 그것 이 바로 오늘 배 워 야 할 Docker Compose 용기 편성 기술 이다.
Docker Compose
Docker Compose 는 다 중 용기 Docker 프로그램 을 정의 하고 실행 하 는 도구 로 YAML 파일 을 통 해 프로그램의 서 비 스 를 정의 합 니 다.이후 하나의 명령 을 통 해 이 용기 들 이 만 든 서 비 스 를 시작 할 수 있다.
기본 단계:
Dockerfile
사용자 정의 미 러 docker-compose.yml
용기 서비스 편성 docker-compose up
용기 서비스 생 성 및 시작 Github 설치
github 에서 최신 버 전의 Compose 로 컬 컴 파일 설치.추천 방식, 오류 가 적어 직접 설치 할 수 있 습 니 다.
github https://github.com/docker/compose/releases
현재 Github 최신 버 전
1.25.4
## Docker Compose
curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
##
chmod +x /usr/local/bin/docker-compose
##
docker-compose -v
pip 설치
이것 은 비교적 보수적인 설치 방법 으로 위의 설치 방법 에 비해 위의 설치 방법 을 사용 하 는 것 을 권장 합 니까? 아니면 위의 설치 방법 을 사용 하 는 것 을 권장 합 니까?
## epel
yum -y install epel-release
## python-pip
yum -y install python-pip
## pip
pip install -U pip
## install
pip install docker-componse
##
docker-compose -v
테스트 사용
Docker Compose 가 정상적으로 설치 되 어 있 는 지 확인 하 십시오. 홈 페이지 의 데모 로 프레젠테이션 을 진행 할 것 입 니 다. Python 과 Redis 를 설치 할 필요 가 없습니다.
1. 디 렉 터 리 만 들 기
mkdir -p composetest
cd composetest
2. pyton 웹 만 들 기
## app.py
vi app.py
##
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.
'.format(count)
##
vi requirements.txt
##
flask
redis
사용자 정의 미 러
## Dockerfile
vi Dockerfile
##
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]
이것 은 Docker 에 게 알려 줍 니 다.
Python 3.7 이미지 부터 이미지 구축.작업 디 렉 터 리 를 / 로 설정 합 니 다.code 명령 에 사용 할 환경 변 수 를 설정 합 니 다.Markup Safe 나 SQLAlchemy 같은 Python 패 키 지 를 컴 파일 할 수 있 도록 gcc 를 설치 합 니 다.Python 의존 항목 을 복사 하고 설치 합 니 다.requirements. txt 는 프로젝트 의 현재 디 렉 터 리 를 이미지 의 작업 디 렉 터 리 로 복사 합 니 다.용기 의 기본 명령 을 설정 합 니 다.flask run
용기 편성 작성
## docker-compose.yml
vi docker-compose.yml
##
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
네트워크 서비스
이 웹 서 비 스 는 Dockerfile 현재 디 렉 터 리 에서 구 축 된 이미 지 를 사용 합 니 다.그리고 용기 와 호스트 를 노출 된 포트 5000 에 연결 합 니 다.이 예제 서 비 스 는 Flask 웹 서버 의 기본 포트 5000 을 사용 합 니 다.
Redis 서비스
이 redis 서 비 스 는 Docker Hub 레 지 스 트 에서 추출 한 공공 Redis 이미 지 를 사용 합 니 다.
서비스 실행
docker-compose up
Starting composetest_redis_1 ... done
Recreating composetest_web_1 ... done
Attaching to composetest_redis_1, composetest_web_1
redis_1 | 1:C 09 Feb 2020 02:14:31.462 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1 | 1:C 09 Feb 2020 02:14:31.462 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1 | 1:C 09 Feb 2020 02:14:31.462 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis_1 | 1:M 09 Feb 2020 02:14:31.463 * Running mode=standalone, port=6379.
redis_1 | 1:M 09 Feb 2020 02:14:31.463 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1 | 1:M 09 Feb 2020 02:14:31.463 # Server initialized
redis_1 | 1:M 09 Feb 2020 02:14:31.463 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
redis_1 | 1:M 09 Feb 2020 02:14:31.463 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
redis_1 | 1:M 09 Feb 2020 02:14:31.463 * DB loaded from disk: 0.000 seconds
redis_1 | 1:M 09 Feb 2020 02:14:31.463 * Ready to accept connections
web_1 | * Serving Flask app "app.py"
web_1 | * Environment: production
web_1 | WARNING: This is a development server. Do not use it in a production deployment.
web_1 | Use a production WSGI server instead.
web_1 | * Debug mode: off
web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
서비스 가 5000 포트 에서 성공 적 으로 실행 되 었 습 니 다. 방문 시 도 를 한 다음 에 새로 고침 하고 카운터 의 변 화 를 관찰 합 니 다!
상용 명령
docker-compose up -d
백 스테이지 운영 서비스[root@mrclinux composetest]# docker-compose up -d
Starting composetest_web_1 ... done
Starting composetest_redis_1 ... done
docker-compose ps
현재 실행 용기 보기[root@mrclinux composetest]# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------
composetest_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
composetest_web_1 flask run Up 0.0.0.0:8080->5000/tcp
docker-compose images
이미 존재 하 는 미 러 정보 보기[root@mrclinux composetest]# docker-compose images
Container Repository Tag Image Id Size
------------------------------------------------------------------------
composetest_redis_1 docker.io/redis alpine b68707e68547 29.78 MB
composetest_web_1 composetest_web latest 0a812986cca6 221.8 MB
docker-compose stop
용 기 를 멈 추고 삭제 하지 않 으 면 start 를 다시 사용 할 수 있 습 니 다.[root@mrclinux composetest]# docker-compose stop
Stopping composetest_web_1 ... done
Stopping composetest_redis_1 ... done
docker-compose start
start 를 사용 하여 존재 하 는 용기 서 비 스 를 시작 합 니 다.[root@mrclinux composetest]# docker-compose start
Starting web ... done
Starting redis ... done
docker-compose down
서비스 정지 및 용기 제거
[root@mrclinux composetest]# docker-compose down
Stopping composetest_web_1 ... done
Stopping composetest_redis_1 ... done
Removing composetest_web_1 ... done
Removing composetest_redis_1 ... done
Removing network composetest_default
docker-compose up
서비스 생 성 및 시작레 퍼 런 스
https://docs.docker.com/compose/
https://www.cnblogs.com/ityouknow/p/8648467.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.