【问题标题】:RUN echo in Dockerfile with docker-compose fails使用 docker-compose 在 Dockerfile 中运行 echo 失败
【发布时间】:2018-09-11 14:30:08
【问题描述】:

所以,我有以下 docker-compose 文件:

version: "3"

services:
  webserver:
    build: 
      context: ./bin/webserver
    container_name: 'png-webserver'
    restart: 'always'
    ports:
      - "18011:80"
      - "14431:443"
    links: 
      - mysql
    volumes: 
      - ${DOCUMENT_ROOT-./www}:/var/www/html
      - ${PHP_INI-./config/php/php.ini}:/usr/local/etc/php/php.ini
      - ${VHOSTS_DIR-./config/vhosts}:/etc/apache2/sites-enabled
      - ${LOG_DIR-./logs/apache2}:/var/log/apache2
  mysql:
    build: ./bin/mysql
    container_name: 'png-mysql'
    restart: 'always'
    ports:
      - "13306:3306"
    volumes: 
      - ${MYSQL_DATA_DIR-./data/mysql}:/var/lib/mysql
      - ${MYSQL_LOG_DIR-./logs/mysql}:/var/log/mysql
      - ./mysqlhome:/home
    environment:
      MYSQL_ROOT_PASSWORD: tiger
      MYSQL_DATABASE: nubuilder
      MYSQL_USER: deckoff
      MYSQL_PASSWORD: deeppurple
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: 'png-phpmyadmin'
    links:
      - mysql
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
    ports:
      - '18080:80'
    volumes: 
      - /sessions

以及以下 Dockerfile(用于 mariadb 容器):

FROM mariadb:10.1

RUN mysql --defaults-extra-file='/home/secret' nubuilder4 < /home/nubuilder4.sql

RUN apt-get update && apt-get install -y nano 

RUN bash -c 'echo [mysqld] >> /etc/mysql/my.cnf'
RUN bash -c 'echo sql-mode=NO_ENGINE_SUBSTITUTION >> /etc/mysql/my.cnf'

简而言之 - Dockerfile 中的 RUN 命令似乎永远不会运行。我希望将 2 行附加到文件中,并安装 nano,但这些都没有发生。我尝试在启动容器后运行它们,它们工作正常。好像我做错了什么。

另外,我不知道如何调试它。

【问题讨论】:

  • 当你运行它时会发生什么? MariaDB Dockerfile 是否与 docker-compose.yml 中的 mysql: 块一起使用?
  • 您是否真的(重新)使用docker-compose build 构建图像?
  • 就是这样,看来我需要构建一个新图像,我认为 docker-compose up 也可以,似乎它只是创建容器并将它们“粘合”在一起

标签: docker docker-compose mariadb dockerfile


【解决方案1】:

将 nano 和 echo 行安装到文件中的 RUN 命令似乎是正确的。 很可能问题出在RUN mysql --defaults-extra-file='/home/secret' nubuilder4 &lt; /home/nubuilder4.sql

由于您正在挂载卷 /home,因此我们无法对其进行调试。你确定这个 RUN mysql... 命令成功通过了吗?

要调试:更改您的 docker-compose.yml,而不是 build:./bin/mysql,使用 image:mariadb:10.1,然后连接到容器并使用 mysql 运行第一个命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    • 2020-09-21
    • 2014-06-07
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多