Skip to main content

Контейнеризация приложения из 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: