2 Варіанта створення контейнера, в якому налаштовуємо nginx, php та flask

Автор | 23.03.2023

Створення Dockerfile і запуск його для генерації контейнера – це більш стандартний спосіб створення контейнерів Docker. У цьому випадку ви створюєте Dockerfile, який містить всі необхідні команди та налаштування для створення вимог до контейнера. Після цього ви запускаєте цей Dockerfile, щоб згенерувати образ контейнера, а потім запускаєте цей образ, щоб створити новий контейнер.

У випадку, який я описав раніше, ви запускаєте порожній контейнер зі стандартним образом Ubuntu server, а потім ви заходите всередину цього контейнера і встановлюєте всі необхідні додатки, один за одним, вручну. Цей метод може бути корисним, якщо ви хочете зробити якісь експерименти або тестування в обмеженому середовищі, але, зазвичай, створення Dockerfile більш зручне та ефективне.


Щоб створити порожній контейнер і встановити nginx, PHP та Flask, потрібно виконати наступні кроки:

  1. Створити Dockerfile:
FROM ubuntu:latest

# Встановлюємо nginx, PHP та Flask
RUN apt-get update && \
    apt-get install -y nginx python3 python3-pip && \
    pip3 install Flask

# Копіюємо конфігураційні файли nginx
COPY nginx.conf /etc/nginx/nginx.conf
COPY default.conf /etc/nginx/conf.d/default.conf

# Копіюємо файл зі скриптом Flask
COPY app.py /app/

# Відкриваємо порти для nginx
EXPOSE 80

# Запускаємо nginx та скрипт Flask
CMD ["nginx", "-g", "daemon off;"]
  1. Створити файли конфігурації nginx:

nginx.conf:

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://127.0.0.1:5000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

default.conf:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.php index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}
  1. Створити файл зі скриптом Flask:

app.py:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')

4. Перейти у терміналі в папку з Dockerfile та іншими файлами і виконати команду для збирання контейнера:

docker build -t mycontainer .

Запустити контейнер:

docker run -p 80:80 mycontainer

це запустить контейнер



Це другий спосіб створення контейнера, він більш експериментальний, отже дозволяє вручну все налаштувати і т.д. ну скажем, для тих хто любить процесс )))

Для створення порожнього контейнера на основі Ubuntu сервера та запуску його виконайте наступні кроки:

  1. Встановіть Docker на свою машину та переконайтеся, що він успішно запущений.
  2. Відкрийте командний рядок та введіть наступну команду, щоб завантажити образ Ubuntu сервера:

docker pull ubuntu

3. Створіть новий порожній контейнер на основі завантаженого образу Ubuntu за допомогою команди:

docker create --name mycontainer ubuntu

4. Запустіть контейнер за допомогою команди:

docker start mycontainer

Тепер контейнер запущено та готовий до встановлення додатків.

Або такий спосіб (в документації Docker)

docker run -it ubuntu bash
  1. Зайдіть в контейнер, виконавши наступну команду:
docker exec -it mycontainer bash

6. Встановіть необхідні пакети за допомогою команди apt-get:

apt-get update
apt-get install nginx php python3 python3-pip -y

7. Встановіть Flask та всі потрібні бібліотеки Python за допомогою pip:

pip3 install flask

Вийдіть з контейнера за допомогою команди exit:

exit

Тепер у вашому контейнері містяться всі необхідні додатки: nginx, php, python та Flask. Ви можете запускати свої веб-додатки, використовуючи цей контейнер як базовий образ.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *