#python #angular #docker #nginx #docker-compose
#python #angular #docker #nginx #docker-compose
Вопрос:
Я пытаюсь настроить свое приложение angular, которое вызывает серверную базу данных Oracle из моего приложения python. Без docker я могу обслуживать свое приложение на порту 4201, а мой серверный сервер работает на порту 2232. Все это работает нормально, но когда я пытаюсь это документировать, я, кажется, получаю ошибку COR. Я не уверен, чего мне не хватает.
Python dockerfile:
FROM python:3
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
ADD thomas.py /
CMD [ "python3", "./thomas.py" ]
Angular Dockerfile:
# Stage 1
FROM node:12.16.1-alpine as build-step
WORKDIR /usr/src/app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build --prod
# Stage 2
FROM nginx:1.17.1-alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=build-step /usr/src/app/dist/bim-angulardashboard/ /usr/share/nginx/html
Файл Nginx.conf:
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
gzip on;
gzip_http_version 1.0;
gzip_proxied any;
gzip_min_length 500;
gzip_disable "MSIE [1-6].";
gzip_types text/plain text/xml text/css
text/comma-separated-values
text/javascript
application/x-javascript
application/atom xml;
# Configuration for the server
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
expires -1;
default_type application/javascript;
add_header Pragma "no-cache";
add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
try_files $uri$args $uri$args/ $uri $uri/ /index.html =404;
}
location /api {
proxy_pass http://<my_vm_server_name>:5000;
proxy_set_header Host $host;
}
}
}
Docker-compose.yml файл:
version: '3'
services:
python-app:
build:
context: ./docker/flask
dockerfile: Dockerfile #this is your dockerfile
container_name: python-app #docker container name
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: app
SERVICE_TAGS: dev
working_dir: /
ports:
- "5000:5000" #binding ports, external port : application listening port
volumes:
- ./in000031-batch_dashboard/docker/flask/:/var/www/html # after : its the location in the container OS
networks:
app-network:
ipv4_address: 172.20.0.2
angular-app:
build:
context: .
dockerfile: Dockerfile #this is your dockerfile
container_name: angular-app #docker container name
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: app
SERVICE_TAGS: dev
working_dir: /
ports:
- "4201:80" #binding ports, external port : nginx listening port
volumes:
- ./in000031-batch_dashboard/:/var/www/html # after : its the location in the container OS
networks:
app-network:
ipv4_address: 172.20.0.3
#Docker Networks
networks:
app-network:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.20.0.0/16
#Volumes
volumes:
dbdata:
driver: local
Пожалуйста, дайте мне знать, если какие-либо из моих конфигурационных файлов неверны или у вас есть лучшее решение? Любая помощь будет оценена. Спасибо
Комментарии:
1. Установили ли вы драйверы, необходимые для подключения к вашей базе данных oracle в вашем образе docker? Выполнили ли вы шаги, перечисленные на сайте, приведенном в конце трассировки стека?
2. Я бы отредактировал ваш вопрос так, чтобы либо а) отразить ошибку, отображаемую в вашем stacktrace (ошибка подключения к Oracle DB), и добавить stacktrace в виде фрагмента кода, а не изображения, либо б) показать сведения об ошибке для ошибки CORS, которую вы видите
3. Ошибка говорит, что вам не хватает библиотеки… и в вашем вопросе ничего не упоминается о библиотеках oracle. Мы не знаем, что вы сделали или проверили, вы должны включить это в свой вопрос.
4. @C.Nivs, теперь я добавил скриншот ошибки COR. И да, я установил необходимые драйверы для Oracle_cx на моей виртуальной машине Linux, которую я использую. Без docker он подключается к базе данных, и я вижу результат, но, запуская его в docker, я получаю вышеуказанные ошибки.
5. Первая попытка в Google показала мне это: blogs.oracle.com/opal /…
Ответ №1:
Похоже, что существует проблема с подключением к Python и Oracle DB. Как устанавливается Oracle db? Это также служба docker или размещено где-то еще?
Убедитесь, что вы указали правильное имя службы Oracle db / ip-адрес для подключения к базе данных.
Комментарии:
1. без docker я использовал шаги по ссылке для установки Oracle_cx, и я смог нормально запустить свое приложение. Но когда я запускаю его в docker, должен ли я снова установить Oracle_cx в docker перед запуском контейнеров?