update dockerfiles and compose prod

This commit is contained in:
kusz committed 2024-11-28 10:47:56 +01:00
1 parent b7cb8e026e
commit 86ec2ab34c
7 files changed
+141 -62

No files matched your search

Vendored
BIN
View File
Binary file not shown.
+12 -21
View File
@@ -87,27 +87,18 @@ steps:
# docker-compose up -d backend frontend
# EOF
# Wdrożenie na środowisko produkcyjne
- name: deploy-production
image: kroniak/ssh-client
- name: deploy-production
image: docker:latest
environment:
PROD_HOST: prodat.outbo.pl
PROD_USER: deploy
PROD_KEY:
from_secret: prod_ssh_key
DRONE_REGISTRY: your-docker-registry
services:
- name: docker
image: docker:dind
commands:
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo "${PROD_KEY}" > ~/.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
+26 -11
View File
@@ -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
+45 -28
View File
@@ -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:
driver: bridge
external-network:
external: true
+39
View File
@@ -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"]
+17
View File
@@ -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", "."]
+2 -2
View File
@@ -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 .