skip to Main Content

I made a Dockerfile and a docker-compose.yml myself and attempted to make containers from the docker-compose.yml.
The apache container works properly: stable but the db container doesn’t.
It never becomes the status up.

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

Used docker logs <db container ID> to see what happened ↓

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

docker-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

I’ll show you code/file you need to figure this out.

/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

In var/lib/mysql, these files & dirs exist.

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

And then, In /work_space/eccube_data/db, indeed, those wewe kind of Synchronized!!!

/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

Answers


  1. Chosen as BEST ANSWER

    I deleted container, image and volume, and then executed docker-compose up -d. It worked. Now I have the containers properly.

    Thank you so much!


  2. With Docker for Mac, the following stores data inside the embedded VM since there is no mapping for this directory to your Mac environment:

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

    and

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

    Instead, you want to use relative paths:

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

    and

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

    This assumes you run your docker-compose commands from inside the eccube directory, and that your project is inside the /Users directory, which is case sensitive (see more about using other directories in the Docker for Mac getting started guide).

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search