如何在 docker 容器中启动类似 mysql 的服务?

How to launch a service like mysql in a docker container?

所以我尝试创建一个 docker-compose.yml 文件来为我的 Web 应用程序创建一个容器 laravel 并为我的数据库创建另一个容器 mariadb。我尝试 link 将这两个容器放在一起,以便 laravel 可以从 mariadb 获取数据。问题是我的 laravel 容器没有 mysql 套接字文件,所以它不能使用 mysql。我很确定我错过了一些东西,或者我不理解某些东西,因为没有任何效果。所以我的问题是 我们如何正确地将带有 laravel 的 archlinux 容器连接到 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")

这是我的 docker 个文件:

database/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

我觉得我做的事情不对,任何人都可以帮助我或告诉我正确的方法吗?

GitHub 上的 repository 是 docker 的基于 ArchLinux 的映像,它包括 PHP、PHP-composer、MySQL、PostgreSQL和 MariaDB。我只需要稍微调整一下就可以让它工作并满足我的需要!