访问数据库时dockerfile中的网络问题
network issues in dockerfile while accessing database
我有一个小型 python 后端和一个 mariaDB。对 Docker 服务感到沮丧。
docker-compse 看起来像这样:
version: '3.5'
networks:
web:
name: web
external: true
wsm:
name: wsm
internal: true
volumes:
wsm-partsfinder-db:
name: wsm-partsfinder-db
services:
wsmbackend:
build:
context: .
dockerfile: ./docker/Dockerfile
container_name: wsm-file-parts-backend
restart: always
depends_on:
- wsmdb
ports:
- "8888:8888"
networks:
- web
- wsm
wsmdb:
container_name: wsmdb
image: mariadb:10.7.1
command: --default-authentication-plugin=mariadb_native_password
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: password
MARIADB_USER: wsm
MARIADB_PASSWORD: password
MARIADB_DATABASE: wsm_parts
volumes:
- wsm-partsfinder-db:/var/lib/mysql
networks:
- wsm
ports:
- "4485:3306"
为 wsmbackend 服务调用的 Docker 文件如下所示:
FROM python
RUN apt-get update -y
RUN apt-get upgrade -y
COPY . /wsm
WORKDIR /wsm
RUN pip install -r requirements.txt
RUN yoyo apply --database mysql://wsm:password@wsmdb:4485/wsm_parts ./migrations
EXPOSE 8888
CMD ["/bin/sh", "-c", "python main.py"]
我在 yoyo apply 中遇到错误...
这个案例的问题是什么?
提前致谢
您无法 运行 在构建阶段查询数据库,因为您的数据库容器尚未在当前点启动。
RUN
语句只在构建阶段执行。您需要将它移动到 CMD
(入口点),以便在启动容器和数据库时执行它。
我有一个小型 python 后端和一个 mariaDB。对 Docker 服务感到沮丧。
docker-compse 看起来像这样:
version: '3.5'
networks:
web:
name: web
external: true
wsm:
name: wsm
internal: true
volumes:
wsm-partsfinder-db:
name: wsm-partsfinder-db
services:
wsmbackend:
build:
context: .
dockerfile: ./docker/Dockerfile
container_name: wsm-file-parts-backend
restart: always
depends_on:
- wsmdb
ports:
- "8888:8888"
networks:
- web
- wsm
wsmdb:
container_name: wsmdb
image: mariadb:10.7.1
command: --default-authentication-plugin=mariadb_native_password
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: password
MARIADB_USER: wsm
MARIADB_PASSWORD: password
MARIADB_DATABASE: wsm_parts
volumes:
- wsm-partsfinder-db:/var/lib/mysql
networks:
- wsm
ports:
- "4485:3306"
为 wsmbackend 服务调用的 Docker 文件如下所示:
FROM python
RUN apt-get update -y
RUN apt-get upgrade -y
COPY . /wsm
WORKDIR /wsm
RUN pip install -r requirements.txt
RUN yoyo apply --database mysql://wsm:password@wsmdb:4485/wsm_parts ./migrations
EXPOSE 8888
CMD ["/bin/sh", "-c", "python main.py"]
我在 yoyo apply 中遇到错误...
这个案例的问题是什么? 提前致谢
您无法 运行 在构建阶段查询数据库,因为您的数据库容器尚未在当前点启动。
RUN
语句只在构建阶段执行。您需要将它移动到 CMD
(入口点),以便在启动容器和数据库时执行它。