如何在docker容器中启动mysql等服务?

时间:2018-02-23 05:39:23

标签: mysql laravel docker docker-compose archlinux

因此,我尝试创建一个docker-compose.yml文件,使用laravel为我的网络应用创建一个容器,并使用mariadb为我的数据库创建另一个容器。我试图将这两个容器链接在一起,以便laravel可以从mariadb获取数据。问题是我的laravel容器没有mysql套接字文件,所以它不能使用mysql。我很确定我错过了什么,或者我不理解某些东西,因为没有任何作品。所以我的问题是我们如何将archlinux容器与laravel连接到mysql容器?这里是我的docker-compose文件

version: '3'
services:
database:
  build: ./database
  container_name: database.dev
  command: mysqld --user=root --verbose
  ports:
    - "3307:3306"
  restart: always
 web:
    build: .
    volumes:
      - "/app"
    ports:
     -  "8000:8000"
    links:
      - database
    depends_on:
      - database

当我尝试在我的archlinux容器中安装mysql时,mysql不会在/etc/init.d/mysql创建服务或在/run/mysqld/mysqld.sock处发送一个套接字文件。当我尝试在容器终端中使用mysql时,我得到了这个输出。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2 "No such file or directory")

这是我的泊坞文件:

数据库/ Dockerfile

FROM mysql:latest

RUN mkdir -p /db
WORKDIR /db

COPY . /db

RUN cd /db
RUN /etc/init.d/mysql start

Dockerfile

FROM base/archlinux

RUN mkdir -p /app

WORKDIR /app
COPY . /app

RUN pacman -Syu --noconfirm
RUN pacman -S openssh composer php mariadb --noconfirm

RUN groupadd -g 89 mysql &>/dev/null
RUN useradd -u 89 -g mysql -d /var/lib/mysql -s /bin/false mysql &>/dev/null
#RUN chown -R mysql:mysql var/lib/mysql &>/dev/null

RUN mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
RUN COMPOSER_ALLOW_SUPERUSER=1
RUN cd /app 
RUN /usr/bin/composer install 
RUN echo APP_KEY= > .env 
RUN echo DB_USERNAME=root >> .env 
RUN echo DB_PASSWORD= >> .env 
RUN cat php.ini > /etc/php/php.ini #my custom configuration for the project
RUN php artisan key:generate 
RUN ln -srf storage/app/public public/storage
RUN php artisan storage:link


VOLUME ["/app"]

EXPOSE 8000

CMD php /app/artisan serve --host=0.0.0.0 --port=8000

我觉得我没有做正确的事情,任何人都可以帮助我或以正确的方式向我展示?

0 个答案:

没有答案