никогда не устанавливайте контейнер как «вверх» [docker] - PullRequest
0 голосов
/ 22 мая 2019

Я сделал Dockerfile и docker-compose.yml сам и попытался сделать контейнеры из docker-compose.yml. Контейнер apache работает нормально: стабильно, а контейнер db - нет. Он никогда не становится статусом up.

/work_space
      |-eccube #docker-compose.yml
      |        #Dockerfile
      |
      |-eccube-data #db
                    #data
                    #ececcube-2.4.1
                    #html

Используется docker logs <db container ID>, чтобы увидеть, что произошло ↓

Initializing database
2019-05-22T07:59:02.264102Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-05-22T07:59:02.266227Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2019-05-22T07:59:02.267061Z 0 [ERROR] Aborting

Dockerfile

FROM centos:7
RUN yum update -y
RUN yum install -y sudo
RUN yum install -y epel-release
RUN yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
RUN yum clean all
RUN yum -y install wget
RUN yum -y install httpd
RUN yum -y install --enablerepo=remi,remi-php52 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-pgsql

RUN wget http://downloads.ec-cube.net/src/eccube-2.4.1.tar.gz
RUN tar zxvf eccube-2.4.1.tar.gz

RUN mv -f /eccube-2.4.1/data/ /var/www/data
RUN mv -f /eccube-2.4.1/html/ /var/www/html

RUN rm -rf eccube-2.4.1
RUN rm -rf eccube-2.4.1.tar.gz

CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
EXPOSE 80

докер-compose.yml

version: '3'
services:
  apache:
    build: .
    privileged: true
    tty: true
    ports:
      - 80:80
    volumes:
      - /work_space/eccube-data/html:/var/www/html
      - /work_space/eccube-data/data:/var/www/data
  db:
    image: mysql:5.7
    privileged: true
    tty: true
    ports:
      - 6666:3306
    volumes:
      - /work_space/eccube-data/db:/var/lib/mysql
    environment:
      - MYSQL_DATABASE:'cube2_dev'
      - LANG=C.UTF-8
      - MYSQL_ROOT_PASSWORD=root

Я покажу вам код / ​​файл, который вам нужен, чтобы выяснить это.

/w/eccube ❯❯❯ docker ps                                                                                                                                                                                ✘ 1
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
251df77751fe        eccube_apache       "/usr/sbin/httpd -DF…"   About an hour ago   Up About an hour    0.0.0.0:80->80/tcp   eccube_apache_1
/w/eccube ❯❯❯ docker ps -a
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS                         PORTS                           NAMES
b857c8b211ca        mysql:5.6                  "docker-entrypoint.s…"   About an hour ago   Exited (1) About an hour ago                                   eccube_db_1
251df77751fe        eccube_apache              "/usr/sbin/httpd -DF…"   About an hour ago   Up About an hour               0.0.0.0:80->80/tcp              eccube_apache_1

В var / lib / mysql эти файлы и каталоги существуют.

root@f4680fa4d3f4:/var/lib/mysql# ls
auto.cnf    ca.pem       client-key.pem  ib_logfile0  ibdata1  mysql           private_key.pem  server-cert.pem  sys
ca-key.pem  client-cert.pem  ib_buffer_pool  ib_logfile1  ibtmp1   performance_schema  public_key.pem   server-key.pem

А потом, в / work_space / eccube_data / db, действительно, те, которые мы вроде как синхронизировали !!!

/w/e/db ❯❯❯ ls
auto.cnf           ca.pem             client-key.pem     ib_logfile0        ibdata1            mysql              private_key.pem    server-cert.pem    sys
ca-key.pem         client-cert.pem    ib_buffer_pool     ib_logfile1        ibtmp1             performance_schema public_key.pem     server-key.pem

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Я удалил container, image и volume, а затем выполнил docker-compose up -d.Это сработало.Теперь у меня есть контейнеры правильно.

Большое спасибо!

0 голосов
/ 22 мая 2019

При использовании Docker для Mac следующие данные хранятся во встроенной виртуальной машине, поскольку для этого каталога нет соответствия вашей среде Mac:

  - /work_space/eccube-data/html:/var/www/html
  - /work_space/eccube-data/data:/var/www/data

и

  - /work_space/eccube-data/db:/var/lib/mysql

Вместо этоговы хотите использовать относительные пути:

  - ../eccube-data/html:/var/www/html
  - ../eccube-data/data:/var/www/data

и

  - ../eccube-data/db:/var/lib/mysql

Это предполагает, что вы запускаете команды docker-compose из каталога eccube, а ваш проект находится внутриКаталог /Users, чувствительный к регистру (подробнее об использовании других каталогов см. В руководстве по началу работы с Docker для Mac ).

...