Контейнеризация приложения из git
Создаем папку app и переходим в нее.
Клонируем git
git clone https://github.com/sudaka/irksecrets.git
Создаем dockerfile
FROM ubuntu:latest
LABEL maintainer="..."
RUN apt-get update
RUN apt install -y python3 python3-pip uvicorn
RUN mkdir /var/www
WORKDIR /var/www
COPY ./irksecrets /var/www
RUN python3 -m pip install -r requirements.txt
EXPOSE 8000
ENTRYPOINT ["uvicorn", "irksecrets:app", "--host", "0.0.0.0", "--port", "8000"]
Создаем образ
docker build -t irkscweb:2.0 .
Создаем контейнер
docker run -d --name fa2 -p 8000:8000 irkscweb:2.0
Сейчас контейнер сервиса должен заработать, по адресу 127.0.0.1/docs должна быть страница сервиса. Останавливаем сервис.
Информация по официальному образу postgres:
POSTGRES_PASSWORD=mysecretpassword
POSTGRES_USER
POSTGRES_DB #при отсутствии будет создана БД
POSTGRES_HOST_AUTH_METHOD
все файлы .sql .sh в папке docker-entrypoint-initdb.d исполняются при инициализации БД
Поднимаемся на один уровень и создаем папку db.
Создаем скрипт настройки
create role irksecrets with login superuser;
alter role irksecrets with encrypted password 'Password';
create table secrets (chash char(64) primary key, enctext bytea);
alter database irksecrets owner to irksecrets;
FROM postgres
LABEL maintainer="bobrovsa@yandex.ru"
ENV POSTGRES_PASSWORD qaz123wsx
ENV POSTGRES_HOST_AUTH_METHOD md5
ENV POSTGRES_DB: irksecrets
COPY *.sql /docker-entrypoint-initdb.d/ #инит скрипты, при наличии БД не запускаются
EXPOSE 5432
Создаем compose файл. Директории app db рядом с .yaml файлом
services
webapp:
build: app/.
ports:
- target: 8000
published: 8000
networks:
- isnet
dbhost:
build: db/.
environment:
- POSTGRES_PASSWORD=Password
- POSTGRES_HOST_AUTH_METHOD=md5
- POSTGRES_DB=irksecrets
ports:
- target: 5432
published: 5432
networks:
- isnet
networks:
isnet:
No Comments