docker-compose에서 Nginx+Gunicorn+Flask+MariaDB+phpMyAdmin
예정목차
어디까지나 예정입니다만 이번 구축한 환경을 사용해 만들어 보려고 생각합니다.
1. 환경 구축 ※본 기사
2. Flask+RoboBrowser로 스크래핑한 결과를 Bootstrap(honoka)으로 표시
3. flask-sqlalchemy 사용 (MariaDB와 연결)
4. flask-login 사용 (로그인 기능 구현)
참고 자료
아래의 기사의 조합으로 작성하고 있습니다.
매우 도움이되었습니다. 이 자리를 빌려 감사드립니다.
· Compose file version3 참조
※docker-compose.yml의 depends_on이나 env_file등 파라미터에 대해서 참고로 했습니다.
· docker-compose에서 gunicorn+nginx+flask를 움직여 본 이야기
※nginx+gunicorn+flask 부분을 그대로 이용하였습니다.
변경 사항: nginx의 default.conf를 다음과 같이 변경하지 않으면 시작할 수 없습니다.
default.conf server_name web:5000;
· docker-compose로 MySQL 환경을 쉽게 구축
※초기 테이블 작성 부분에서 참고로 했습니다.
※phpmyadmin 부분의 구축에 이용하였습니다.
· gunicorn에서 Python 웹 애플리케이션을 실행하자.
※Gunicorn의 기동 방법에 대해서 참고로 했습니다.
· 혼다 다카시 씨가 "Flask를 처음부터 잘 이해하는 책 : 파이썬으로 만드는 웹 응용 프로그램 개발 시작"Kindle 버전.
※파일 분할의 방법을 참고로 했습니다.
환경
호스트 OS: CentOS Linux release 7.6.1810 (Core)
Docker version 18.09.7, build 2d0083d
docker-compose version 1.24.0, build 0aa59064
git 버전 2.9.5
컨테이너 웹에 설치할 모듈
빌드 시 자동 설치됩니다. 그 밖에 필요한 것이 있으면 requirements.txt에 추기하면 OK입니다.
requirements.txtFlask==1.1.1
Flask-SQLAlchemy==2.4.0 ※
gunicorn==19.9.0
PyMySQL==0.9.3 ※
SQLAlchemy==1.3.5 ※
※이번은 사용하고 있지 않습니다만 나중에 사용하기 위해서 인스톨하고 있습니다.
출처
htps : // 기주 b. 코 m / k7679 / ngin x-f ぁsk 마리아
디렉토리 구성
.
├── db
│ ├── Dockerfile
│ ├── backup
│ │ └── init.sql ※DBの初期化用ファイル
│ └── conf.env ※DBの設定ファイル
├── docker-compose.yml
├── nginx
│ ├── Dockerfile
│ ├── default.conf
│ ├── log
│ │ ├── access.log
│ │ └── error.log
│ └── nginx.conf
├── phpmyadmin
│ ├── Dockerfile
│ └── conf.env ※宛先データベース記載
└── web
├── Dockerfile
├── application
│ ├── __init__.py ※アプリケーション本体ファイル
│ └── views.py
├── requirements.txt ※追加pythonのモジュール記載
└── startup.py ※アプリケーション起動ファイル
docker-compose.yml
아래의 기사의 조합으로 작성하고 있습니다.
매우 도움이되었습니다. 이 자리를 빌려 감사드립니다.
· Compose file version3 참조
※docker-compose.yml의 depends_on이나 env_file등 파라미터에 대해서 참고로 했습니다.
· docker-compose에서 gunicorn+nginx+flask를 움직여 본 이야기
※nginx+gunicorn+flask 부분을 그대로 이용하였습니다.
변경 사항: nginx의 default.conf를 다음과 같이 변경하지 않으면 시작할 수 없습니다.
default.conf
server_name web:5000;
· docker-compose로 MySQL 환경을 쉽게 구축
※초기 테이블 작성 부분에서 참고로 했습니다.
※phpmyadmin 부분의 구축에 이용하였습니다.
· gunicorn에서 Python 웹 애플리케이션을 실행하자.
※Gunicorn의 기동 방법에 대해서 참고로 했습니다.
· 혼다 다카시 씨가 "Flask를 처음부터 잘 이해하는 책 : 파이썬으로 만드는 웹 응용 프로그램 개발 시작"Kindle 버전.
※파일 분할의 방법을 참고로 했습니다.
환경
호스트 OS: CentOS Linux release 7.6.1810 (Core)
Docker version 18.09.7, build 2d0083d
docker-compose version 1.24.0, build 0aa59064
git 버전 2.9.5
컨테이너 웹에 설치할 모듈
빌드 시 자동 설치됩니다. 그 밖에 필요한 것이 있으면 requirements.txt에 추기하면 OK입니다.
requirements.txtFlask==1.1.1
Flask-SQLAlchemy==2.4.0 ※
gunicorn==19.9.0
PyMySQL==0.9.3 ※
SQLAlchemy==1.3.5 ※
※이번은 사용하고 있지 않습니다만 나중에 사용하기 위해서 인스톨하고 있습니다.
출처
htps : // 기주 b. 코 m / k7679 / ngin x-f ぁsk 마리아
디렉토리 구성
.
├── db
│ ├── Dockerfile
│ ├── backup
│ │ └── init.sql ※DBの初期化用ファイル
│ └── conf.env ※DBの設定ファイル
├── docker-compose.yml
├── nginx
│ ├── Dockerfile
│ ├── default.conf
│ ├── log
│ │ ├── access.log
│ │ └── error.log
│ └── nginx.conf
├── phpmyadmin
│ ├── Dockerfile
│ └── conf.env ※宛先データベース記載
└── web
├── Dockerfile
├── application
│ ├── __init__.py ※アプリケーション本体ファイル
│ └── views.py
├── requirements.txt ※追加pythonのモジュール記載
└── startup.py ※アプリケーション起動ファイル
docker-compose.yml
빌드 시 자동 설치됩니다. 그 밖에 필요한 것이 있으면 requirements.txt에 추기하면 OK입니다.
requirements.txt
Flask==1.1.1
Flask-SQLAlchemy==2.4.0 ※
gunicorn==19.9.0
PyMySQL==0.9.3 ※
SQLAlchemy==1.3.5 ※
※이번은 사용하고 있지 않습니다만 나중에 사용하기 위해서 인스톨하고 있습니다.
출처
htps : // 기주 b. 코 m / k7679 / ngin x-f ぁsk 마리아
디렉토리 구성
.
├── db
│ ├── Dockerfile
│ ├── backup
│ │ └── init.sql ※DBの初期化用ファイル
│ └── conf.env ※DBの設定ファイル
├── docker-compose.yml
├── nginx
│ ├── Dockerfile
│ ├── default.conf
│ ├── log
│ │ ├── access.log
│ │ └── error.log
│ └── nginx.conf
├── phpmyadmin
│ ├── Dockerfile
│ └── conf.env ※宛先データベース記載
└── web
├── Dockerfile
├── application
│ ├── __init__.py ※アプリケーション本体ファイル
│ └── views.py
├── requirements.txt ※追加pythonのモジュール記載
└── startup.py ※アプリケーション起動ファイル
docker-compose.yml
.
├── db
│ ├── Dockerfile
│ ├── backup
│ │ └── init.sql ※DBの初期化用ファイル
│ └── conf.env ※DBの設定ファイル
├── docker-compose.yml
├── nginx
│ ├── Dockerfile
│ ├── default.conf
│ ├── log
│ │ ├── access.log
│ │ └── error.log
│ └── nginx.conf
├── phpmyadmin
│ ├── Dockerfile
│ └── conf.env ※宛先データベース記載
└── web
├── Dockerfile
├── application
│ ├── __init__.py ※アプリケーション本体ファイル
│ └── views.py
├── requirements.txt ※追加pythonのモジュール記載
└── startup.py ※アプリケーション起動ファイル
docker-compose.yml
docker-compose.yml
version: '3'
services:
web:
build: ./web
container_name: web01
expose:
- 5000
depends_on:
- db
networks:
- test_network
nginx:
build: ./nginx
container_name: nginx01
ports:
- 8889:80 ※4
depends_on:
- web
environment: ※1
- "TZ=Japan"
restart: always
networks:
- test_network
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./nginx/log:/var/log/nginx
db:
build: ./db
container_name: db01
volumes:
- test_db_data:/val/lib/mysql ※5
- ./db/backup:/docker-entrypoint-initdb.d ※2
env_file:
- ./db/conf.env ※3
environment: ※1
- "TZ=Japan"
restart: always
networks:
- test_network
phpmyadmin:
build: ./phpmyadmin
container_name: phpmyadmin01
env_file:
- ./phpmyadmin/conf.env
depends_on:
- db
ports:
- 8888:80 ※4
networks:
- test_network
volumes:
test_db_data: {} ※5
networks:
test_network:
driver: bridge
동작 확인
\$ git clone htps : // 기주 b. 이 m/k k7679/응진 x-fぁsk 마리아. 기 t
\$cd nginx-flask-maria
\$docker-compose up -d --build
\$docker-compose ps
http://[Docker 호스트 주소]:8889
http://[Docker 호스트 주소]:8888
phpMyAdmin 인증에 대한 보충
/etc/phpmyadmin/config.inc.php###途中省略###
if (isset($_ENV['PMA_USER'])) {
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = $_ENV['PMA_USER'];
$cfg['Servers'][$i]['password'] = isset($_ENV['PMA_PASSWORD']) ? $_ENV['PMA_PASSWORD'] : '';
} else {
$cfg['Servers'][$i]['auth_type'] = 'cookie';
}
###途中省略###
위와 같이 구성 파일을 확인하면 PMA_USER를 conf.env로 설정하면 인증 화면이 표시되지 않습니다.
(auth_type이 config가 됨)
그 때문에 「 docker-compose로 MySQL 환경을 쉽게 구축 」에서는 PMA_USER, PMA_PASSWORD를 세트 하고 있습니다만 이번은 삭제했습니다.
루트 로그인은 금지되어 있지 않습니다. db의 conf.env에서 설정한 ID/PASS로 로그인할 수 있습니다.
또한 서버에 [db]를 입력합니다. (db 컨테이너가 대상 서버를 위해)
Reference
이 문제에 관하여(docker-compose에서 Nginx+Gunicorn+Flask+MariaDB+phpMyAdmin), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kk7679/items/9a3a1088f1b0b3ffc93a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
###途中省略###
if (isset($_ENV['PMA_USER'])) {
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = $_ENV['PMA_USER'];
$cfg['Servers'][$i]['password'] = isset($_ENV['PMA_PASSWORD']) ? $_ENV['PMA_PASSWORD'] : '';
} else {
$cfg['Servers'][$i]['auth_type'] = 'cookie';
}
###途中省略###
Reference
이 문제에 관하여(docker-compose에서 Nginx+Gunicorn+Flask+MariaDB+phpMyAdmin), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kk7679/items/9a3a1088f1b0b3ffc93a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)