sql-server - 无法访问 dockerized mssql 服务器
问题描述
我正在尝试对两个 .net core 3.1 服务(my-api 和 my-db)进行 dockerize。my-db 服务正在使用 mssql 数据库,我正在使用下面的脚本在容器启动后立即创建实际的 db inside 容器
docker-compose up --build
服务已启动并正在运行,但是当我使用 api 服务访问 db 时,出现错误使用连接到服务器“my-db”上的数据库“mydatabase”时发生错误。
码头工人-compose.yml
version: '3.0'
services:
my-db:
build: ./Data/Docker
my-api:
ports:
- "8080:5000"
depends_on:
- my-db
... ommited for clarity
数据/码头工人
FROM mcr.microsoft.com/mssql/server:2017-CU17-ubuntu
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN chmod +x /usr/src/app/run-initialization.sh
ENV SA_PASSWORD pass
ENV ACCEPT_EULA Y
ENV MSSQL_PID Express
EXPOSE 1433
CMD /bin/bash ./entrypoint.sh
入口点.sh
/usr/src/app/run-initialization.sh & /opt/mssql/bin/sqlservr
运行初始化.sh
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P pass -d master -i create-database.sql
创建数据库.sql
CREATE DATABASE [mydatabase]
GO
USE [mydatabase]
GO
解决方案
改成entrypoint.sh
这样
/opt/mssql/bin/sqlservr & sleep 10 & /usr/src/app/run-initialization.sh
/opt/mssql/bin/sqlservr
启动 SQL 服务器sleep 10
等待 10 秒/usr/src/app/run-initialization.sh
执行 run-initialization.sh,它连接到 SQL Server 并创建一个数据库。
推荐阅读
- jquery - 如何使用 append 删除刚刚添加的 tr
- php - 为什么 str_replace 函数将文件中的值替换为错误值?
- django - GraphQL 变异以创建外键地址和人员
- python - SyntaxError:打印函数中的语法无效
- angular - 导航回父 URL
- ms-word - 是否可以使用 word web addin 获取光标位置
- sql - 当两个表中并非所有值都存在时如何修复两个表的完全外连接
- c++ - std::partition 的问题是分隔小于枢轴的元素
- regex - Logstash grok 过滤器 Apache 模式
- kubernetes - 如何在我的 kubelet 服务中启用监听 10255