如何为JIRA和MySQL创建docker compose

如何为JIRA和MySQL创建docker compose,mysql,docker,docker-compose,jira,Mysql,Docker,Docker Compose,Jira,我正在尝试创建一个docker-compose.yml文件,该文件将显示JIRA和MySQL。这是我的档案: version: '3' services: jira: depends_on: - mysql container_name: jira restart: always networks: - jiranet build: context: . dockerfile: Dock

我正在尝试创建一个docker-compose.yml文件,该文件将显示JIRA和MySQL。这是我的档案:

version: '3'

services:
  jira:
    depends_on:
        - mysql
    container_name: jira
    restart: always
    networks:
        - jiranet
    build:
        context: .
        dockerfile: Dockerfile.jira
    environment:
        - ATL_DB_TYPE=mysql
        - ATL_DB_DRIVER=com.mysql.cj.jdbc.Driver
        - ATL_JDBC_URL=jdbc:mysql://mysql:3306/jiradb
        - ATL_JDBC_USER=jira
        - ATL_JDBC_PASSWORD=jellyfish
    ports:
        - 8080:8080
    volumes:
        - jira-data:/var/atlassian-data/jira

  mysql:
    container_name: mysql
    restart: always
    image: mysql:5.7
    networks:
        - jiranet
    environment:
        - MYSQL_ROOT_PASSWORD=ChangeMe!
        - MYSQL_DATABASE=jiradb
        - MYSQL_USER=jira
        - MYSQL_PASSWORD=jellyfish
    command: [mysqld, --character-set-server=utf8, --collation-server=utf8_bin, --default-storage-engine=INNODB, --max_allowed_packet=256M, --innodb_log_file_size=2GB, --transaction-isolation=READ-COMMITTED, --binlog_format=row]
    volumes:
        - mysql-data:/var/lib/mysql

networks:
    jiranet: {}

volumes:
  jira-data:
  mysql-data:

 
不幸的是,当JIRA尝试初始化数据库时,我遇到了以下形式的启动错误:

CREATE command denied to user 'jira'@'172.22.0.3' for table 'jiraaction'
我猜这是因为mysql容器正在创建用户jira,但只允许它从localhost连接。但是,JIRA容器被视为来自外部IP


关于如何让用户JIRA通过JIRA容器访问mysql中的jiradb数据库,有什么想法吗?

我发现了问题——JIRA容器中缺少了一个环境变量:

ATL_DB_SCHEMA_NAME=jiradb

在那之后,一切都很顺利

我发现了问题——我在jira容器中缺少一个环境变量:

ATL_DB_SCHEMA_NAME=jiradb

在那之后,一切都很顺利

你能用
jira
user连接mysql吗?或者您是否尝试过使用
root
user?如果我将ATL_JDBC_user切换为root,将ATL_JDBC_密码切换为change me,则会得到相同的结果。如果我执行到mysql容器中,我就能够很好地与jiradb或root连接。可能JIRA容器在DB之前就准备好了。(取决于仅控制容器启动的顺序,但不保证一个容器在另一个容器之前准备就绪)。尝试使用下面页面上列出的脚本,以确保在JIRA尝试对其执行命令之前DB已准备就绪:实际上,我忽略了这个细节,但我小心地避免了竞争条件,首先启动数据库,然后在JIRA完全启动后单独启动它。我的猜测是,这与MySQL的远程用户与本地用户的概念有关,但我不知道如何修复它。你能将MySQL与
jira
user连接起来吗?或者您是否尝试过使用
root
user?如果我将ATL_JDBC_user切换为root,将ATL_JDBC_密码切换为change me,则会得到相同的结果。如果我执行到mysql容器中,我就能够很好地与jiradb或root连接。可能JIRA容器在DB之前就准备好了。(取决于仅控制容器启动的顺序,但不保证一个容器在另一个容器之前准备就绪)。尝试使用下面页面上列出的脚本,以确保在JIRA尝试对其执行命令之前DB已准备就绪:实际上,我忽略了这个细节,但我小心地避免了竞争条件,首先启动数据库,然后在JIRA完全启动后单独启动它。我的猜测是,这与MySQL的远程用户与本地用户的概念有关,但我不确定如何修复它。