Ich werde es mit einer Beispielanwendung (Feedback-API) vorstellen.
`Dies ist ein Artikel über die Mac-Umgebung, aber die Vorgehensweise ist für die Windows-Umgebung dieselbe. Bitte lesen und probieren Sie den umweltabhängigen Teil. ``
Nachdem Sie diesen Artikel bis zum Ende gelesen haben, können Sie:
No. | Überblick | Stichwort |
---|---|---|
1 | Docker-Einstellungen | install, Dockerfile, docker-compose.yml |
2 | Docker starten | docker run, docker-compose up |
Umgebung | Ver. |
---|---|
macOS Catalina | 10.15.3 |
Python | 3.7.3 |
Docker | 19.03.8 |
Ich denke, dass Sie Ihr Verständnis vertiefen können, indem Sie den Implementierungsinhalten und dem Quellcode tatsächlich folgen. Bitte benutzen Sie es auf jeden Fall.
tree.sh
/
│── config/
├── app/
└── Dockerfiles/
├── app/
│ ├── Dockerfile
│ ├── docker-compose.yml
│ └── entrypoint.sh
├── docker_compose_up.sh
└── docker_run.sh
command_line.sh
~$ brew install docker
~$ brew cask install docker
FROM python:3.7
RUN mkdir /code
WORKDIR /code
ADD entrypoint.sh /code/entrypoint.sh
ADD app/ /code
RUN pip install --upgrade pip --no-cache-dir
RUN pip install -r requirements.txt --no-cache-dir
EXPOSE 5000
ENV PYTHONPATH "${PYTHONPATH}:/code/"
ENV FLASK_APP "/code/run.py"
CMD ["/code/entrypoint.sh"]
Dockerfiles/app/entrypoint.sh
#!/bin/sh
sleep 5
flask db init
flask db migrate
flask db upgrade
flask run --host=0.0.0.0 --port=5000
docker(flask) <-> localhost(postgres)
Halten Sie postgres start
auf localhost.
Dockerfiles/docker_run.sh
#!/bin/sh
docker stop $(docker ps -q)
docker rm $(docker ps -q -a)
# docker rmi $(docker images -q) -f
rsync -av --exclude=app/tests* app Dockerfiles/app
docker build -t feedback-api Dockerfiles/app
docker run -it -p 5000:5000 feedback-api:latest
command_line.sh
Dockerfiles/docker_run.sh
docker(flask) <-> docker(postgres)
Machen Sie Postgres auf localhost stop
.
Dockerfiles/docker_compose_up.sh
#!/bin/sh
docker stop $(docker ps -q)
docker rm $(docker ps -q -a)
# docker rmi $(docker images -q) -f
rsync -av --exclude=app/tests* app Dockerfiles/app
docker-compose -f Dockerfiles/app/docker-compose.yml up --build
Dockerfiles/app/docker-compose.yml
version: '3'
services:
docker_postgres:
image: postgres:11.5
ports:
- 5432:5432
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: feedback
POSTGRES_INITDB_ARGS: --encoding=UTF-8
app:
build: .
depends_on:
- docker_postgres
ports:
- 5000:5000
environment:
ENV_CONFIG: docker
SQLALCHEMY_POOL_SIZE: 5
SQLALCHEMY_MAX_OVERFLOW: 10
SQLALCHEMY_POOL_TIMEOUT: 30
command_line.sh
Dockerfiles/docker_compose_up.sh
Recommended Posts