update dockerfiles and compose prod
This commit is contained in:
1 parent
b7cb8e026e
commit
86ec2ab34c
7 files changed
+141
-62
No files matched your search
+12
-21
@@ -87,27 +87,18 @@ steps:
|
|||||||
# docker-compose up -d backend frontend
|
# docker-compose up -d backend frontend
|
||||||
# EOF
|
# EOF
|
||||||
|
|
||||||
# Wdrożenie na środowisko produkcyjne
|
- name: deploy-production
|
||||||
- name: deploy-production
|
image: docker:latest
|
||||||
image: kroniak/ssh-client
|
|
||||||
environment:
|
environment:
|
||||||
PROD_HOST: prodat.outbo.pl
|
|
||||||
PROD_USER: deploy
|
|
||||||
PROD_KEY:
|
|
||||||
from_secret: prod_ssh_key
|
|
||||||
DRONE_REGISTRY: your-docker-registry
|
DRONE_REGISTRY: your-docker-registry
|
||||||
|
services:
|
||||||
|
- name: docker
|
||||||
|
image: docker:dind
|
||||||
commands:
|
commands:
|
||||||
- mkdir -p ~/.ssh
|
- docker login -u gitea-ci -p your-password ${DRONE_REGISTRY}
|
||||||
- chmod 700 ~/.ssh
|
- docker pull ${DRONE_REGISTRY}/web:${DRONE_COMMIT_SHA}
|
||||||
- echo "${PROD_KEY}" > ~/.ssh/id_rsa
|
- docker pull ${DRONE_REGISTRY}/api:${DRONE_COMMIT_SHA}
|
||||||
- chmod 600 ~/.ssh/id_rsa
|
- sed -i -e "s#COMPOSE_BACKEND_IMAGE=.*#COMPOSE_BACKEND_IMAGE=${DRONE_REGISTRY}/api:${DRONE_COMMIT_SHA}#" .env
|
||||||
- scp -r ./docker-compose.prod.yml ${PROD_USER}@${PROD_HOST}:~/docker-compose.yml
|
- sed -i -e "s#COMPOSE_FRONTEND_IMAGE=.*#COMPOSE_FRONTEND_IMAGE=${DRONE_REGISTRY}/web:${DRONE_COMMIT_SHA}#" .env
|
||||||
- >
|
- docker-compose rm --force backend frontend
|
||||||
ssh ${PROD_USER}@${PROD_HOST} << EOF
|
- docker-compose up -d backend frontend
|
||||||
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
|
|
||||||
+26
-11
@@ -1,24 +1,39 @@
|
|||||||
FROM python:3.8
|
FROM python:3.8
|
||||||
|
|
||||||
|
#Ustaw zmienne środowiskowe
|
||||||
ENV PYTHONDONTWRITEBYTECODE 1
|
ENV PYTHONDONTWRITEBYTECODE 1
|
||||||
ENV PYTHONUNBUFFERED 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 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
|
# Ustaw katalog roboczy
|
||||||
RUN mkdir -p /var/www && chown -R www-data:www-data /var/www
|
|
||||||
|
|
||||||
USER www-data
|
|
||||||
ENV PATH /var/www/.local/bin:${PATH}
|
|
||||||
|
|
||||||
WORKDIR /code
|
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/
|
COPY pyproject.toml poetry.lock /code/
|
||||||
|
|
||||||
RUN pip install --upgrade -U pip
|
# Instalacja narzędzi
|
||||||
RUN pip install -U poetry
|
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 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
@@ -1,65 +1,82 @@
|
|||||||
version: "3.2"
|
version: '3.8'
|
||||||
services:
|
|
||||||
|
services:
|
||||||
db:
|
db:
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
image: postgres:11
|
image: postgres:11
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
volumes:
|
volumes:
|
||||||
- ./db:/var/lib/postgresql/data
|
- ./db:/var/lib/postgresql/data
|
||||||
networks:
|
networks:
|
||||||
- internal-network
|
- internal-network
|
||||||
|
|
||||||
pgadmin:
|
# pgadmin:
|
||||||
env_file:
|
# image: dpage/pgadmin4
|
||||||
- .env
|
# restart: unless-stopped
|
||||||
image: dpage/pgadmin4
|
# env_file:
|
||||||
volumes:
|
# - .env
|
||||||
- ./pgadmin:/var/lib/pgadmin
|
# depends_on:
|
||||||
restart: unless-stopped
|
# - db
|
||||||
depends_on:
|
# ports:
|
||||||
- db
|
# - "5050:80"
|
||||||
networks:
|
# networks:
|
||||||
- internal-network
|
# - internal-network
|
||||||
|
|
||||||
backend:
|
backend:
|
||||||
|
build:
|
||||||
|
context: ./evg-outbo-api
|
||||||
|
dockerfile: api.Dockerfile
|
||||||
|
image: outbo_backend:latest
|
||||||
|
restart: unless-stopped
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
image: "${COMPOSE_BACKEND_IMAGE}"
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
|
volumes:
|
||||||
|
- ./evg-outbo-api:/code
|
||||||
networks:
|
networks:
|
||||||
- internal-network
|
- internal-network
|
||||||
- external-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:
|
frontend:
|
||||||
|
build:
|
||||||
|
context: ./evg-outbo-web
|
||||||
|
dockerfile: web.Dockerfile
|
||||||
|
image: outbo_frontend:latest
|
||||||
|
restart: unless-stopped
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
image: "${COMPOSE_FRONTEND_IMAGE}"
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- backend
|
- backend
|
||||||
|
volumes:
|
||||||
|
- ./evg-outbo-web:/usr/share/nginx/html
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
networks:
|
networks:
|
||||||
- internal-network
|
- internal-network
|
||||||
|
|
||||||
server:
|
server:
|
||||||
env_file:
|
image: abiosoft/caddy
|
||||||
- .env
|
|
||||||
image: "abiosoft/caddy"
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ./Caddyfile:/etc/Caddyfile
|
- ./Caddyfile:/etc/Caddyfile
|
||||||
- ./.caddy:/root/.caddy
|
- ./.caddy:/root/.caddy
|
||||||
ports:
|
ports:
|
||||||
- 80:80
|
- "80:80"
|
||||||
- 443:443
|
- "443:443"
|
||||||
networks:
|
networks:
|
||||||
- internal-network
|
- internal-network
|
||||||
- external-network
|
- external-network
|
||||||
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
internal-network:
|
internal-network:
|
||||||
internal: true
|
driver: bridge
|
||||||
external-network:
|
external-network:
|
||||||
|
external: true
|
||||||
Executable
+39
@@ -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"]
|
||||||
|
|
||||||
Executable
+17
@@ -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
@@ -1,4 +1,4 @@
|
|||||||
FROM node:erbium AS builder
|
FROM node:14 AS builder
|
||||||
ARG outbo_env
|
ARG outbo_env
|
||||||
ARG backend_url
|
ARG backend_url
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
@@ -10,7 +10,7 @@ ENV REACT_APP_OUTBO_ENV=${outbo_env}
|
|||||||
ENV REACT_APP_BACKEND_URL=${backend_url}
|
ENV REACT_APP_BACKEND_URL=${backend_url}
|
||||||
RUN yarn run build
|
RUN yarn run build
|
||||||
|
|
||||||
FROM node:erbium
|
FROM node:14
|
||||||
RUN yarn global add serve
|
RUN yarn global add serve
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=builder /app/build .
|
COPY --from=builder /app/build .
|
||||||
|
|||||||
Reference in new issue
Block a user