Hi, newbie here (sorry and thanks for any help),
My application build is failing because I can not connect to the db image from my web image (or is the proper terminology container here?) Which is why I have inserted a “RUN ping -c 3” command so that I can test I have an actual connection, however this also fails.
When I launch just the db_network I can ping from a simple alpine container (when placed on the same network), but this doesn’t seem to work.
CONTEXT:
docker-compose.yaml
version: '3.4'
services:
db:
restart: always
image: mysql:latest
command: --default-authentication-plugin=mysql_native_password
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: root # TODO: Change this to something more secure on actual server!
volumes:
- ./db:/docker-entrypoint-initdb.d/:ro
networks:
- db_network
web:
restart: always
build:
context: ./web
args:
FLASK_CONFIGURATION: conf/deployment.conf
secrets:
- flask
networks:
- nginx_network
- db_network
depends_on:
- db
nginx:
restart: always
build: ./nginx
networks:
- nginx_network
ports:
- "80:80"
depends_on:
- web
networks:
nginx_network:
driver: bridge
db_network:
driver: bridge
secrets:
flask:
file: flask_secret_key.txt
web/Dockerfile
FROM python:3.7 AS builder
ENV PYTHONUNBUFFERED 1
WORKDIR /packages/
RUN pip install -U pip && pip install pipenv
COPY Pipfile.lock Pipfile /packages/
RUN bash -c 'PIPENV_VENV_IN_PROJECT=1 pipenv install'
# FROM python:3.7-slim
FROM python:3.7
ARG FLASK_CONFIGURATION
ENV PYTHONUNBUFFERED=1
RUN mkdir -p /usr/src/gridt-server
COPY --from=builder /packages/ /packages
ENV PATH="/packages/.venv/bin:${PATH}" FLASK_CONFIGURATION=${FLASK_CONFIGURATION}
WORKDIR /usr/src/gridt-server
COPY . /usr/src/gridt-server
RUN ping -c 3 db
RUN flask initdb
EXPOSE 8000
# RUN apt-get update && apt-get install -y mysql-client && mysql -h db -p root
CMD ["gunicorn", "-w", "2", "-b", ":8000", "wsgi:app"]