小编Mar*_*mes的帖子

如何在Docker容器中使用模式初始化MySQL数据库?

我正在尝试使用MySQL数据库创建一个容器,并为这些数据库添加一个模式.

我目前的Dockerfile是:

FROM mysql
MAINTAINER  (me) <email>

# Copy the database schema to the /data directory
COPY files/epcis_schema.sql /data/epcis_schema.sql

# Change the working directory
WORKDIR data

CMD mysql -u $MYSQL_USER -p $MYSQL_PASSWORD $MYSQL_DATABASE < epcis_schema.sql
Run Code Online (Sandbox Code Playgroud)

为了创建容器,我遵循Docker上提供的文档并执行此命令:

docker run --name ${CONTAINER_NAME} -e MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD} -e MYSQL_USER=${DB_USER} -e MYSQL_PASSWORD=${DB_USER_PASSWORD} -e MYSQL_DATABASE=${DB_NAME} -d mvpgomes/epcisdb
Run Code Online (Sandbox Code Playgroud)

但是当我执行此命令时,不会创建Container,并且在Container状态下可以看到CMD未成功执行,实际上只mysql执行了命令.

无论如何,有没有办法用模式初始化数据库,还是我需要手动执行这些操作?

mysql database-schema docker

141
推荐指数
9
解决办法
13万
查看次数

Docker - 将 Apache Tomcat Web 服务器连接到 MySQL 服务器

我试图将在 Apache Tomcat 容器中运行的 Web 服务器连接到运行另一个容器的 MySQL 数据库。为了做到这一点,我使用了 Docker 的链接机制。

docker run -it --name ${CONTAINER_NAME} --link db:db -p 8080:8080 -d tomcat
Run Code Online (Sandbox Code Playgroud)

运行容器后,我可以看到容器已链接并且环境变量已正确公开。

为了将在 Tomcat 容器中运行的 Web 应用程序连接到数据库,我使用了以下配置文件:

<Context>
  <Resource
    name="jdbc/MYDB"
    type="javax.sql.DataSource"
    auth="Container"
    username="user"
    password="password"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://${DB_PORT_3306_TCP_ADDR}:${DB_PORT_3306_TCP_PORT}/epcis?autoReconnect=true">
  </Resource>
</Context>
Run Code Online (Sandbox Code Playgroud)

现在的问题是我无法建立到数据库的连接,因为在Tomcat环境中无法识别Docker暴露的环境变量。

有没有办法让 Docker 暴露的这些环境变量对 Apache Tomcat 环境可见?

java mysql tomcat jndi docker

5
推荐指数
1
解决办法
8626
查看次数

标签 统计

docker ×2

mysql ×2

database-schema ×1

java ×1

jndi ×1

tomcat ×1