webman线上部署踩坑记之docker与数据库配置

leeseean

我选的是centos7服务器,然后nginx,mysql,redis这些依赖我一开始是网上搜索用命令行安装的,折腾了很久各种问题,最后选择了用宝塔面板去安装,解决了安装过程出现的一些问题。
然后是选择了用docker部署,项目部署在docker容器,mysql则部署在宿主机上。
然后遇到的一个问题数据库连不上的问题,因为项目是在容器里,mysql在外面,所以不能使用localhost的办法去连。mysql的host需要填写宿主机的ip,如下图我所圈中的那个ip,然后还要设置允许访问
截图
截图
这样就能连上数据库了。
这是dockerfile

FROM centos:7

# install yum-utils
RUN yum -y install yum-utils

# install libevent
RUN yum -y install libevent libevent-devel

# install php8.1 libs
RUN yum -y install epel-release
RUN yum -y install https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm
RUN yum-config-manager --enable remi-php81
RUN yum -y install php-cli php-event php-posix php-pcntl php-zip php-openssl php-devel php-gd php-mbstring php-curl php-xml php-simplexml php-fileinfo php-sodium php-pear php-bcmath php-json php-mysqlnd php-redis php-amqp php-imagick  --skip-broken

# copy project
RUN mkdir /app
COPY ./ /app
RUN chmod -R 777 /app/public /app/runtime

# install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
RUN composer install --no-dev --working-dir=/app

# clean all
RUN yum clean all

ENTRYPOINT ["php", "/app/start.php", "start"]

这是build命令

# -e HOST_IP=$(ip addr show eth0 | awk '/inet / {print $2}' | cut -d '/' -f 1) 这句是将宿主机的 IP 地址作为 HOST_IP 环境变量传递给容器
 docker run -d --restart=always --name=app -p 8787:8787 -e HOST_IP=$(ip addr show eth0 | awk '/inet / {print $2}' | cut -d '/' -f 1) developer/app:1.0
843 0 1
0个评论

leeseean

220
积分
0
获赞数
0
粉丝数
2023-06-19 加入
🔝