Я очень плохо знаком с миром контейнеров и docker, но чувствую, что это технология, которую я должен использовать из-за определенных c ограничений инфраструктуры для проекта, над которым я работаю.
I ' я пытаюсь создать приложение на моем компьютере Windows 10, а затем перенести его на другой компьютер Windows 10, который живет в другой сети, у которого нет доступа к inte rnet и нет связи (я могу только нажать / вытащить из моя основная сеть). Приложение является приложением Flask, работающим на сервере uWsgi / nginx.
Я следовал некоторым учебникам по docker и docker compose и придумал следующую структуру приложения:
Application
- flask
- app
- env
- Dockerfile
- app.config
- run.py
- nginx
- Dockerfile
- nginx.conf
- docker-compose.yml
Содержимое docker составного файла:
version: "3.7"
services:
nginx:
build: ./nginx
image: nginx
container_name: nginx
restart: always
ports:
- "80:80"
- "443:443"
flask:
build: ./flask
container_name: flask
restart: always
image: trac
environment:
- APP_NAME=Trac
expose:
- 8080
depends_on:
- nginx
Содержимое flask Dockerfile:
# Use python 3.7 container image
FROM python:3.7.2-stretch
# Set the working directory of the app
WORKDIR /app
# Copy the directory contents into the container at /app
ADD . /app
# Install the dependencies
RUN pip install -r requirements.txt
# run the command to start uWSGI
CMD ["uwsgi", "app.ini"]
Содержимое app.ini
[uwsgi]
wsgi-file = run.py
callable = app
socket = :8080
processes = 4
threads = 2
master = true
chmod-socket = 660
vacuum = true
die-on-term = true
Содержимое файла nginx Docker: FROM nginx
RUN rm /etc/nginx/conf.d/default.conf
COPY crt.crt /etc/nginx/
COPY key.key /etc/nginx/
COPY nginx.conf /etc/nginx/conf.d
Содержимое nginx .conf
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl http2 default_server;
ssl_certificate crt.crt;
ssl_certificate_key key.key;
location / {
include uwsgi_params;
uwsgi_pass flask:8080;
}
}
При использовании docker -compose build Я получаю несколько изображений, которые, как я думал, не будут желаемым результатом? Я думаю, я думал, что это будет одно изображение, которое затем можно было бы переместить и запустить в другом месте.
Проблема, однако, заключается в том, как двигаться по изображениям и запускать их на компьютере без целых rnet access.
Я могу создать приложение локально, и все работает без сбоев.
Любая помощь в этом была бы полезна. Заранее спасибо.