docker - compose 실행 Flask 응용 최 적 실천
6119 단어 Docker
『 8195 』 예전 에 응용 을 배 치 했 을 때 각종 환경 설정 이 필요 하고 각종 셸 작업 이 있어 야 사용 가능 한 서 비 스 를 구축 할 수 있 습 니 다.현재 Docker 가 생 긴 후에 배치 방식 이 더욱 쉬 워 지고 설정 오류 가 발생 하기 쉽 지 않 으 며 환경 이 일치 하지 않 습 니 다.로 컬 환경 에서 운행 할 수 있 고 온라인 으로 이전 하 는 데 여러 가지 문제 가 발생 하 는 것 을 해결 했다. 이런 문 제 는 대부분 온라인 과 로 컬 환경 에 차이 가 있 고 설정 에 오류 가 발생 하기 쉽다.그렇다면 docker - compose 와 docker 사이 에는 어떤 관계 가 있 습 니까?
先来看看docker-compose 的定义:
「定义和运行多个 Docker 容器的应用(Defining and running multi-container Docker applications)」
docker 는 Dockerfile 템 플 릿 파일 을 통 해 응용 용 기 를 정의 할 수 있다 는 것 을 알 고 있 습 니 다.실제 응용 프로그램 에 서 는 여러 용기 가 함께 프로그램 을 실행 하 는 경우 가 많다.예 를 들 어 Flask 응용 을 실현 하려 면 Flask 서비스 자 체 를 제외 하고 데이터베이스 서비스 용기 등 이 필요 하 다.Compose 는 이러한 수 요 를 마침 만족 시 켰 다.이것 은 사용자 가 하나의 docker - compose. yml 템 플 릿 파일 (YAML 형식) 을 통 해 연 결 된 응용 용 기 를 프로젝트 (procject) 로 정의 할 수 있 도록 합 니 다. Docker - Compose 사용 자 를 통 해 하나의 프로필 로 여러 용기 의 응용 을 쉽게 정의 한 다음 에 하나의 명령 으로 이 응용 프로그램의 모든 의존 도 를 설치 하여 구축 을 완성 할 수 있 습 니 다.Docker - Compose 는 용기 와 용기 간 에 편성 을 어떻게 관리 하 는 지 에 대한 문 제 를 해결 했다.
실시 절차
Dockerfile 사용자 정의 미 러 사용 하기
* 8195: 미 러 의 맞 춤 형 제작 은 실제 적 으로 각 층 에 추 가 된 설정, 파일 을 맞 추 는 것 입 니 다. Flask 응용 은 환경 의존 이 있어 야 실행 할 수 있 기 때 문 입 니 다.따라서 Flask 를 Docker 용기 에서 실행 하려 면 이 용 기 는 모든 환경 을 설치 해 야 합 니 다.Dockerfile 은 환경 의존 설정 등 을 제공 합 니 다.Dockerfile 은 하나의 텍스트 파일 로 그 안에 하나의 명령 (Instruction) 이 포함 되 어 있 고 모든 명령 이 한 층 씩 구축 되 어 있 기 때문에 모든 명령 의 내용 은 이 층 이 어떻게 구축 해 야 하 는 지 설명 하 는 것 이다.
다음은 제 GitHub 프로젝트 flask - v2ex 에 적 용 된 Dockerfile 파일 을 예 로 들 어 보 겠 습 니 다.
FROM daocloud.io/python:3.5
MAINTAINER Guoweikuang
RUN mkdir -p /home/guoweikuang/app
WORKDIR /home/guoweikuang/app
ADD ./requirements.txt /home/guoweikuang/app/requirements.txt
RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
ADD . /home/guoweikuang/app
CMD python manage.py runserver -h 0.0.0.0
FROM: 指定了基础镜像,以该镜像为基础,在其上进行定制操作
MAINTAINER: 用来指定镜像创建者信息
RUN: 创建了 **/home/guoweikuang/app** 文件夹 (后面 RUN pip3 安装Python扩展库)
WORKDIR: 切换目录,可以多次切换(相当于cd命令)
ADD: 从本地目录相应文件拷贝到容器路径里
CMD: 设置container启动时执行的操作,运行 Flask 应用并设置host为0.0.0.0
docker - compose. yml 파일 작성
docker - compose. yml 파일 은 모든 것 을 연결 합 니 다.이 는 응용 구성 (웹 서비스 와 데이터베이스), 사용 하 는 Docker 미 러, 미 러 간 연결, 용기 에 마 운 트 된 볼 륨, 서비스 열 린 포트 를 묘사 합 니 다.
다음은 제 GitHub 프로젝트 flask - v2ex 에 적 용 된 docker - compose. yml 파일 을 예 로 들 어 보 겠 습 니 다.
version: '2'
services:
web:
build: .
container_name: flask_v2ex
ports:
- "5000:5000"
redis:
image: "redis:alpine"
compose 에서 두 개의 서비스 웹 과 redis 를 정의 합 니 다.
copose 를 사용 하여 Flask 응용 프로그램 을 구축 하고 실행 합 니 다.
docker - compose up 을 실행 하기 전에 프로젝트 의 redis 연결 설정 을 수정 해 야 합 니 다.
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
修改为:
r = redis.Redis(host='redis', port=6379, decode_responses=True)
flask - v2ex 프로젝트 의 루트 디 렉 터 리 에서 docker - compose up 명령 을 사용 합 니 다. 다음 과 같 습 니 다.
$ docker-compose up
Starting flask_v2ex ... done
Starting flask_v2ex_redis_1 ... done
Attaching to flask_v2ex_redis_1, flask_v2ex
redis_1 | 1:C 01 Jul 07:46:52.053 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1 | 1:C 01 Jul 07:46:52.053 # Redis version=4.0.6, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1 | 1:C 01 Jul 07:46:52.053 # 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 01 Jul 07:46:52.064 * Running mode=standalone, port=6379.
redis_1 | 1:M 01 Jul 07:46:52.064 # 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 01 Jul 07:46:52.064 # Server initialized
redis_1 | 1:M 01 Jul 07:46:52.065 # 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 01 Jul 07:46:52.065 * DB loaded from disk: 0.000 seconds
redis_1 | 1:M 01 Jul 07:46:52.065 * Ready to accept connections
flask_v2ex | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
flask_v2ex | * Restarting with stat
flask_v2ex | * Debugger is active!
flask_v2ex | * Debugger PIN: 742-073-002
Docker 데 몬 에서 5000 포트 를 감청 하고 있 는 것 을 볼 수 있 습 니 다.통과 가능http://localhost:5000 Flask 응용 프로그램 에 접근 합 니 다.
docker - compose 사용
$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------
flask_v2ex /bin/sh -c python manage.p ... Up 0.0.0.0:5000->5000/tcp
flask_v2ex_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
$ docker-compose run web env
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=e4b6b17f39dc
TERM=xterm
LANG=C.UTF-8
GPG_KEY=97FC712E4C024BBEA48A61ED3A5CA953F73C700D
PYTHON_VERSION=3.5.4
PYTHON_PIP_VERSION=9.0.1
HOME=/root
실행 중인 서 비 스 를 중단 하려 면 ctrl + c 또는 docker - compose stop 을 통 해 서 비 스 를 중단 할 수 있 습 니 다.
레 퍼 런 스
Docker 입문 부터 실천 까지 - 실전 Django Dockerfile 로 Docker 미 러 구축
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
첫 번째 Docker for Mac참고 , 나는 옆에 있는 Mac에 Docker를 설치하고 컨테이너를 세워 보고 싶다. Docker Hub를 처음 사용할 때는 계정을 만들어야 합니다. Docker.dmg을 실행하면 Docker가 설치됩니다. Dock...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.