因此,我尝试创建一个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
我觉得我没有做正确的事情,任何人都可以帮助我或以正确的方式向我展示?