From 86ec2ab34c873ceb8a5d38d0b30d35d0dbce4ecb Mon Sep 17 00:00:00 2001 From: kusz Date: Thu, 28 Nov 2024 10:47:56 +0100 Subject: [PATCH] update dockerfiles and compose prod --- .DS_Store | Bin 8196 -> 8196 bytes .drone.yml | 33 ++++++---------- api.Dockerfile | 37 ++++++++++++------ docker-compose.prod.yml | 73 +++++++++++++++++++++-------------- evg-outbo-api/api.Dockerfile | 39 +++++++++++++++++++ evg-outbo-web/web.Dockerfile | 17 ++++++++ web.Dockerfile | 4 +- 7 files changed, 141 insertions(+), 62 deletions(-) create mode 100755 evg-outbo-api/api.Dockerfile create mode 100755 evg-outbo-web/web.Dockerfile diff --git a/.DS_Store b/.DS_Store index 9f3d78f4a5e0a01c99992c433d747d9368552a2a..7f4db5225fa4e539b03e1f8e25d225bc6591972b 100644 GIT binary patch delta 300 zcmZp1XmOa}&nUeyU^hRb^kg0ZeWnF$lWheg*gopLziC-BIa)vp#;g{QW(ruad4_;E zqlk%#fsTTaxlyf-LbaixnW2t?ndRieg5i?|1m!1N3h^=hww^2~C?}Ge@8Xh_lb^)E zz`((6c66m>%`r!i#N?SmJg5Svh4>f~z}kNbX-(D_Y`|rQ*JL?iD<&ORpfQq@i-iR_ zij6xrL(P?(ycAvFy09=~0MJ}1!E%OFhNQCKqP(2^ymX+07$+-;s7w|R;bqqC^9HgP ZGU+|om}t(lnO)*L%jA#3Iw;~MOaSeqS!DnK delta 238 zcmZp1XmOa}&nUSuU^hRbg~`3hTs ~/.ssh/id_rsa - - chmod 600 ~/.ssh/id_rsa - - scp -r ./docker-compose.prod.yml ${PROD_USER}@${PROD_HOST}:~/docker-compose.yml - - > - ssh ${PROD_USER}@${PROD_HOST} << EOF - docker login -u gitea-ci -p your-password ${DRONE_REGISTRY} - docker pull ${DRONE_REGISTRY}/web:${DRONE_COMMIT_SHA} - docker pull ${DRONE_REGISTRY}/api:${DRONE_COMMIT_SHA} - docker-compose rm --force backend - docker-compose rm --force frontend - docker-compose up -d backend frontend - EOF + - docker login -u gitea-ci -p your-password ${DRONE_REGISTRY} + - docker pull ${DRONE_REGISTRY}/web:${DRONE_COMMIT_SHA} + - docker pull ${DRONE_REGISTRY}/api:${DRONE_COMMIT_SHA} + - sed -i -e "s#COMPOSE_BACKEND_IMAGE=.*#COMPOSE_BACKEND_IMAGE=${DRONE_REGISTRY}/api:${DRONE_COMMIT_SHA}#" .env + - sed -i -e "s#COMPOSE_FRONTEND_IMAGE=.*#COMPOSE_FRONTEND_IMAGE=${DRONE_REGISTRY}/web:${DRONE_COMMIT_SHA}#" .env + - docker-compose rm --force backend frontend + - docker-compose up -d backend frontend diff --git a/api.Dockerfile b/api.Dockerfile index e15b5f2..25fcb01 100755 --- a/api.Dockerfile +++ b/api.Dockerfile @@ -1,24 +1,39 @@ FROM python:3.8 +#Ustaw zmienne środowiskowe ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 +# Zainstaluj zależności systemowe RUN apt-get update && apt-get install -y nano && rm -rf /var/lib/apt/lists/* -RUN mkdir -p /code && chown -R www-data:www-data /code -RUN mkdir -p /var/www && chown -R www-data:www-data /var/www - -USER www-data -ENV PATH /var/www/.local/bin:${PATH} - +# Ustaw katalog roboczy WORKDIR /code + +# Tworzenie wirtualnego środowiska +RUN python3 -m venv /code/venv + +# Ustaw ścieżkę do wirtualnego środowiska +ENV PATH="/code/venv/bin:$PATH" + +# Skopiuj pliki `pyproject.toml` i `poetry.lock` COPY pyproject.toml poetry.lock /code/ -RUN pip install --upgrade -U pip -RUN pip install -U poetry +# Instalacja narzędzi +RUN pip install --upgrade pip setuptools wheel + +# Instalacja poetry i zależności aplikacji +RUN pip install poetry RUN poetry config virtualenvs.create false --local -RUN poetry install --no-dev --extras "production" +RUN poetry install --only main --extras "production" + +# Zmień właściciela plików na `www-data` +RUN chown -R www-data:www-data /code + +# Przejście na użytkownika `www-data` +USER www-data + +# Domyślny punkt wejścia +CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app.wsgi:application"] -COPY . /code/ -CMD exec gunicorn outbo.wsgi:application --access-logfile - --bind 0.0.0.0:8000 --workers 2 diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 56bf5f0..7125c57 100755 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -1,65 +1,82 @@ -version: "3.2" -services: +version: '3.8' + +services: db: - env_file: - - .env image: postgres:11 restart: unless-stopped + env_file: + - .env volumes: - ./db:/var/lib/postgresql/data networks: - internal-network - pgadmin: - env_file: - - .env - image: dpage/pgadmin4 - volumes: - - ./pgadmin:/var/lib/pgadmin - restart: unless-stopped - depends_on: - - db - networks: - - internal-network +# pgadmin: +# image: dpage/pgadmin4 +# restart: unless-stopped +# env_file: +# - .env +# depends_on: +# - db +# ports: +# - "5050:80" +# networks: +# - internal-network backend: + build: + context: ./evg-outbo-api + dockerfile: api.Dockerfile + image: outbo_backend:latest + restart: unless-stopped env_file: - .env - image: "${COMPOSE_BACKEND_IMAGE}" - restart: unless-stopped depends_on: - db + volumes: + - ./evg-outbo-api:/code networks: - internal-network - external-network + command: > + bash -c " + python manage.py migrate && + python manage.py collectstatic --noinput && + gunicorn --bind 0.0.0.0:8000 outbo.wsgi:application + " frontend: + build: + context: ./evg-outbo-web + dockerfile: web.Dockerfile + image: outbo_frontend:latest + restart: unless-stopped env_file: - .env - image: "${COMPOSE_FRONTEND_IMAGE}" - restart: unless-stopped depends_on: - backend + volumes: + - ./evg-outbo-web:/usr/share/nginx/html + ports: + - "3000:3000" networks: - internal-network server: - env_file: - - .env - image: "abiosoft/caddy" + image: abiosoft/caddy restart: unless-stopped - volumes: + volumes: - ./Caddyfile:/etc/Caddyfile - ./.caddy:/root/.caddy ports: - - 80:80 - - 443:443 + - "80:80" + - "443:443" networks: - internal-network - external-network - networks: internal-network: - internal: true - external-network: \ No newline at end of file + driver: bridge + external-network: + external: true diff --git a/evg-outbo-api/api.Dockerfile b/evg-outbo-api/api.Dockerfile new file mode 100755 index 0000000..25fcb01 --- /dev/null +++ b/evg-outbo-api/api.Dockerfile @@ -0,0 +1,39 @@ +FROM python:3.8 + +#Ustaw zmienne środowiskowe +ENV PYTHONDONTWRITEBYTECODE 1 +ENV PYTHONUNBUFFERED 1 + +# Zainstaluj zależności systemowe +RUN apt-get update && apt-get install -y nano && rm -rf /var/lib/apt/lists/* + +# Ustaw katalog roboczy +WORKDIR /code + +# Tworzenie wirtualnego środowiska +RUN python3 -m venv /code/venv + +# Ustaw ścieżkę do wirtualnego środowiska +ENV PATH="/code/venv/bin:$PATH" + +# Skopiuj pliki `pyproject.toml` i `poetry.lock` +COPY pyproject.toml poetry.lock /code/ + +# Instalacja narzędzi +RUN pip install --upgrade pip setuptools wheel + + +# Instalacja poetry i zależności aplikacji +RUN pip install poetry +RUN poetry config virtualenvs.create false --local +RUN poetry install --only main --extras "production" + +# Zmień właściciela plików na `www-data` +RUN chown -R www-data:www-data /code + +# Przejście na użytkownika `www-data` +USER www-data + +# Domyślny punkt wejścia +CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app.wsgi:application"] + diff --git a/evg-outbo-web/web.Dockerfile b/evg-outbo-web/web.Dockerfile new file mode 100755 index 0000000..c13b551 --- /dev/null +++ b/evg-outbo-web/web.Dockerfile @@ -0,0 +1,17 @@ +FROM node:14 AS builder +ARG outbo_env +ARG backend_url +WORKDIR /app +COPY package.json yarn.lock /app/ +RUN yarn +COPY . /app +ENV NODE_ENV production +ENV REACT_APP_OUTBO_ENV=${outbo_env} +ENV REACT_APP_BACKEND_URL=${backend_url} +RUN yarn run build + +FROM node:14 +RUN yarn global add serve +WORKDIR /app +COPY --from=builder /app/build . +CMD ["serve", "-p", "80", "-s", "."] \ No newline at end of file diff --git a/web.Dockerfile b/web.Dockerfile index 0cf2efa..c13b551 100755 --- a/web.Dockerfile +++ b/web.Dockerfile @@ -1,4 +1,4 @@ -FROM node:erbium AS builder +FROM node:14 AS builder ARG outbo_env ARG backend_url WORKDIR /app @@ -10,7 +10,7 @@ ENV REACT_APP_OUTBO_ENV=${outbo_env} ENV REACT_APP_BACKEND_URL=${backend_url} RUN yarn run build -FROM node:erbium +FROM node:14 RUN yarn global add serve WORKDIR /app COPY --from=builder /app/build .