国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman Docker部署方案(CnetOS7 + PHP8.1)

Caesar-Tang

webman Docker容器化部署方案

一. 方案優(yōu)勢(shì)

1. 方便 多平臺(tái)的開發(fā)部署
2. 方便 修改 PHP 版本
3. 方便 修改 PHP 擴(kuò)展

二. Dockerfile

1. 基于 CentOS:7 + PHP8.1
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"]
2. 如何修改 PHP 版本:
修改 Dockerfile 中的 "RUN yum-config-manager --enable remi-php81" 行中的 "remi-php81" 即可。 該信息表示 PHP 的版本, 如 使用 PHP8.0, 將其修改 "remi-php80"。
3. 如何修改 PHP 擴(kuò)展:
添加或刪除 Dockerfile 中的 "RUN yum -y install php-cli..." 行中的 PHP 擴(kuò)展即可。PHP 擴(kuò)展格式為 php-擴(kuò)展名, 如 添加 redis 擴(kuò)展, 在該行增加 "php-redis"。(當(dāng)前 Dockerfile 中已添加了該擴(kuò)展)
4. 注意事項(xiàng):
(1)按需安裝擴(kuò)展,若教程中的擴(kuò)展您不需要,請(qǐng)刪除
(2)按需安裝 composer 及依賴,若您代碼中已安裝依賴,請(qǐng)刪除或注釋教程中 install composr 部分
(3)若安裝過程中出現(xiàn)超時(shí)問題,請(qǐng)配置鏡像加速,具體參見:https://www.runoob.com/docker/docker-mirror-acceleration.html

三. Docker容器化部署

1. Docker 構(gòu)建鏡像:
1. 將 Dockerfile 放入應(yīng)用跟目錄

2. 運(yùn)行制作鏡像(鏡像名稱按 開發(fā)者/應(yīng)用:版本):
docker build --rm -t developer/app:1.0 .
2. Docker 運(yùn)行命令:
1. 使用鏡像創(chuàng)建容器:
    docker run -d --restart=always --name=app -p 18787:18787 developer/app:1.0
    參數(shù)說明:
    -d:后臺(tái)方式運(yùn)行
    --restart=always:自啟動(dòng)
    --name=app:容器服務(wù)名稱
    -p 18787:18787:映射端口(將外部端口映射到容器內(nèi)部服務(wù)端口)
    developer/app:1.0:鏡像名稱

2. 容器服務(wù)操作
    (1) 查看容器狀態(tài)
    docker ps -a
    (2) 進(jìn)入容器
    docker exec -it app /bin/bash
    (3) 重啟服務(wù)
    docker restart app
    (4) 關(guān)閉服務(wù)
    docker stop app
    (5) 容器狀態(tài)
    docker stats
7418 11 14
11個(gè)評(píng)論

wash2018

D:\wnmp\docker\webman-docker>docker build --rm -t developer/app:1.0 .
Sending build context to Docker daemon 17.27MB
Step 1/12 : FROM centos:7
---> eeb6ee3f44bd
Step 2/12 : RUN yum -y install yum-utils
---> Running in 448015c975e5
failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/bin/sh": stat /bin/sh: no such file or directory: unknown

第二步就報(bào)錯(cuò)了,告辭

  • Caesar-Tang 2023-04-24
    1. 在 centos7(Docker version 20.10.5, build 55c4c88)及 win10(Docker version 20.10.24, build 297e128) 測(cè)試打包均正常
    2. 第2步的命令,只是簡單的運(yùn)行 yum 命令安裝組件,此命令和觸犯的報(bào)錯(cuò)無實(shí)際關(guān)聯(lián)
    3. 從錯(cuò)誤提示看,可能是你那邊下載的 centos:7 鏡像的問題。你可以看下鏡像的來源(docker.io/library/centos:7),并運(yùn)行 docker inspect centos:7 看具體詳情,在 Cmd 中查看是否支持上述的 /bin/sh 或 /bin/bash
  • ziyoren 2024-05-06

    http://www.wtbis.cn/a/1672 可以試試這個(gè)

leeseean

這里沒啥沒有安裝數(shù)據(jù)庫mysql啊

  • Caesar-Tang 2023-06-22
    1. mysql是單獨(dú)的服務(wù),若你想用docker安裝mysql,可以參照這個(gè)文檔:https://www.yuque.com/g/caesartang/su2cap/nmkgio/collaborator/join?token=lMAibDSOHeLSe1rl# 《容器部署 - Mysql》
    2. php讀取mysql的擴(kuò)展是 php-mysqlnd
  • leeseean 2023-06-22

    composer也沒有安裝吧。我是把代碼推送到遠(yuǎn)程,執(zhí)行composer命令安裝依賴包

  • Caesar-Tang 2023-06-22

    將如下代碼放在 # clean all 上面(上面教程已補(bǔ)充):
    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

  • leeseean 2023-06-22

    這個(gè)容器怎么訪問外部的mysql,我mysql連不上。

  • Caesar-Tang 2023-06-26

    需要在代碼中連接mysql的配置處指定,非容器或Dockerfile處。
    若通過內(nèi)網(wǎng)連接mysql,將連接mysql的host換做內(nèi)網(wǎng)地址(非127.0.0.1),win上使用ipconfig查看,centos上使用ifconfig查看;公網(wǎng)連接直接使用公網(wǎng)ip即可。

chaz6chez
FROM php:8.2-fpm-alpine

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
    curl -sSL https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions -o - | sh -s  \
    sockets pcntl zip ffi pdo_mysql gd event opcache redis uuid yaml apcu @composer

VOLUME /var/www
WORKDIR /var/www

用install-php-extensions安裝拓展可能會(huì)更好一些;

version: "3.1"
services:
  php:
    restart: always
    container_name: php
    build:
      context: ./
    volumes:
      - ./:/var/www
    ports:
      - "8001:8001"
      - "8002:8002"
      - "8003:8003"
      - "8004:8004"
    environment:
      TZ: ${TIME_ZONE}
    logging:
      driver: json-file
      options:
        max-size: "20m"
        max-file: "10"
    tty: true
    networks:
      - backend

  redis:
    restart: always
    container_name: redis
    image: redis:7-alpine
    ports:
      - "6379:6379"
    environment:
      TZ: ${TIME_ZONE}
    networks:
      - backend

  mysql:
    restart: always
    container_name: mysql
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
      TZ: ${TIME_ZONE}
    volumes:
      - ./runtime/mysql:/var/lib/mysql
    ports:
      - "3306:3306"
    networks:
      - backend

networks:
  backend:
    driver: bridge

然后再結(jié)合一個(gè)docker-compose編排啟動(dòng),可能會(huì)更簡單

.env如下

TIME_ZONE=Asia/Shanghai
MYSQL_PASSWORD=123456
wentmac

docker中部署workerman服務(wù)的話,需要在docker中做官方推薦的linux內(nèi)核調(diào)優(yōu)嗎?還是只在docker宿主機(jī)中作內(nèi)核參數(shù)調(diào)優(yōu)就行了

  • Caesar-Tang 2023-06-22

    是需要做優(yōu)化的,但是目前docker的系統(tǒng)鏡像,有些內(nèi)核參數(shù)是被移除了的,無法按照workman官方文檔的內(nèi)核優(yōu)化配置去處理。具體可參見:http://www.wtbis.cn/q/4503
    若對(duì)性能有較高的要求,還是建議直接部署到宿主機(jī)上,使用supervisord統(tǒng)一管理。

  • wentmac 2023-06-22

    好的,謝謝,推薦生產(chǎn)還是部署在宿主機(jī)上是吧。我再研究研究

  • Caesar-Tang 2023-06-22

    如果想便于部署和做環(huán)境隔離,使用docker部署是不錯(cuò)的選擇。目前已經(jīng)在多個(gè)項(xiàng)目的生產(chǎn)環(huán)境中使用docker部署,線上沒出過什么問題。但具體的使用,還是看你這邊的業(yè)務(wù)場(chǎng)景。

  • wentmac 2023-06-22

    我主要是看到官方文檔上說:優(yōu)化linux內(nèi)核也是重中之重,以下優(yōu)化每一項(xiàng)都非常非常重要,請(qǐng)務(wù)必按逐一完成。所以我就想著docker中怎么配置 ,查了一圈發(fā)現(xiàn)官方?jīng)]有給什么好的解決方案,我在docker-compose.yml中使用了sysctl,但是net.core.netdev_max_backlog這個(gè)參數(shù)又報(bào)錯(cuò)。所以這塊如果使用docker不進(jìn)行內(nèi)核調(diào)優(yōu),又擔(dān)心會(huì)影響性能,挺糾結(jié)

  • Caesar-Tang 2023-06-22

    當(dāng)你開始糾結(jié)時(shí),表示已經(jīng)有了選擇。所以不用糾結(jié)了,還是直接部署到宿主機(jī)上吧。哈哈 ~0,,0~

leeseean

這個(gè)容器怎么訪問外部的mysql,應(yīng)該要改配置吧
可能build的時(shí)候要指定一下
或者在dockerfile里面寫好配置
具體怎么弄呢?

  • Caesar-Tang 2023-06-26

    需要在代碼中連接mysql的配置處指定,非容器或Dockerfile處。
    若通過內(nèi)網(wǎng)連接mysql,將連接mysql的host換做內(nèi)網(wǎng)地址(非127.0.0.1),win上使用ipconfig查看,centos上使用ifconfig查看;公網(wǎng)連接直接使用公網(wǎng)ip即可。

軟飯工程師

打包成docker 鏡像,如何通過-e 參數(shù)讀取外部輸入的變量呢,
比如,webman 服務(wù)打包成docker鏡像,使用阿里云mysql,將myqli 地址和密碼 使用-e

MYSQL_ROOT_PASSWORD=123456

這種方式在webman 打包的時(shí)候如何使用,謝謝

  • Caesar-Tang 2023-08-10

    可以用過 php 的 getenv 方法獲取環(huán)境變量:

    1. 打包后,運(yùn)行容器時(shí),通過 -e 指定環(huán)境變量,如:docker run -d --restart=always --name=test -p 8787:8787 -e ENV_VAR=env_value caesartang/test:1.0
    2. 代碼中,通過 getenv 獲取環(huán)境變量,如:getenv(ENV_VAR),將會(huì)獲取到值 env_var
    3. 關(guān)于 getenv 的更多信息:https://www.php.net/manual/zh/function.getenv.php
  • 軟飯工程師 2023-08-10

    http://www.wtbis.cn/a/1490
    http://www.wtbis.cn/q/10927
    getenv 有人說會(huì)獲取失敗

  • Caesar-Tang 2023-08-10

    測(cè)試是可以的。"有人說" 的場(chǎng)景,和你的是不是一樣的呢?

  • 軟飯工程師 2023-08-10

    懂了,啟動(dòng)日期的時(shí)候 -e DB_NAME = db_name 指定參數(shù),會(huì)把DB_NAME的值寫入到docker 容器內(nèi)部的環(huán)境變量里,$_ENV['DB_NAME'] 這樣去取值就行了

來者可追

大佬 我在使用這個(gè)方案部署的時(shí)候前面都成功 到了安裝php擴(kuò)展的時(shí)候 那些鏡像返回的地址都是404
一個(gè)擴(kuò)展也安裝不上 最后報(bào)錯(cuò)退出了 你知道什么原因嗎?我是macos系統(tǒng)

  • Caesar-Tang 2023-09-19

    因?yàn)閏entos7已經(jīng)不準(zhǔn)備維護(hù),所以很多軟件源都取消了對(duì)centos的鏡像支持。后續(xù)若有需要,我會(huì)出一個(gè)debian的。

  • Caesar-Tang 2023-10-07

    基于debian的教程已發(fā),若有需要,參見:http://www.wtbis.cn/a/1577

  • 來者可追 2023-10-07

    感謝大佬

平頭有殺氣

謝謝,部署成功,但是我-v映射到/app卻啟動(dòng)不了,我是想做個(gè)開發(fā)的容器,我還得再研究研究

  • Caesar-Tang 2023-11-07

    確保目錄映射正確,如外部代碼路徑為:"/home/docker/app",則使用 "-v /home/docker/app:/app" 映射。
    若還是無法啟動(dòng),可使用 "docker logs -f 容器名" 或 查看runtime下的workman日志 來定位具體問題,若始終無法解決,請(qǐng)反饋。

  • 平頭有殺氣 2023-11-15

    謝謝大佬的回復(fù),找到問題了,是我的容器一直在重啟,我改寫了一下這個(gè)Dockerfile文件,抽空我也分享一下給新人一些便捷的方式

  • Caesar-Tang 2023-11-16

    好的。感謝您的分享。

964562398

大佬我是docker新手,目前本地可以跑起來了。
但是dockerfile不知道怎么配置。請(qǐng)幫我看看
看文檔就是要php環(huán)境和compose,我是這樣寫的
FROM php:8.2-alpine
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer

設(shè)置工作目錄

WORKDIR /app

將當(dāng)前目錄的內(nèi)容復(fù)制到容器的工作目錄中

COPY . /app

暴露應(yīng)用程序的端口

EXPOSE 3001

運(yùn)行應(yīng)用程序

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

  • Caesar-Tang 2023-11-20

    未安裝服務(wù)所需的php擴(kuò)展(非composer安裝的模塊);在 執(zhí)行 mv composer.phar /usr/local/bin/composer 后給 /usr/local/bin/composer 增加可執(zhí)行權(quán)限。

  • 964562398 2023-11-20

    因?yàn)槲业膖p源碼有修改所以直接吧第三方插件復(fù)制進(jìn)去了所以不用安裝composer了,而且就是安裝composer,非常非常慢,已經(jīng)配置了阿里云的鏡像加速還是慢,請(qǐng)問大佬有什么方法可以提速嗎?還有就是hub.docker.com進(jìn)不去了有些鏡像都不知道怎么用,請(qǐng)問有可以代替的其他網(wǎng)站嗎?
    FROM php:8.2-alpine
    RUN docker-php-ext-install pcntl
    RUN docker-php-ext-install mysqlnd
    RUN pecl install redis && docker-php-ext-enable redis

    設(shè)置工作目錄

    WORKDIR /app

    將當(dāng)前目錄的內(nèi)容復(fù)制到容器的工作目錄中

    COPY . /app

    暴露應(yīng)用程序的端口

    EXPOSE 8000

    運(yùn)行應(yīng)用程序

    CMD php webman start

  • Caesar-Tang 2023-11-20
    1. php擴(kuò)展安裝慢:修改源(基于php的alpine鏡像)
      RUN echo "http://mirrors.aliyun.com/alpine/v3.4/main/" > /etc/apk/repositories
    2. composer 自身下載慢:
      建議將composer文件下載到項(xiàng)目文件中,然后在Dockerfile里復(fù)制到容器內(nèi)并增加可執(zhí)行權(quán)限
    3. composer下載服務(wù)依賴慢:修改源
      RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
      RUN composer install --no-dev --working-dir=/app
    4. 訪問 hub.docker.com 慢:掛代理
  • 964562398 2023-11-20

    謝謝解決了哈哈哈
    FROM php:8.2-alpine
    RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

    安裝依賴

    RUN apk add gcc g++ autoconf make

    安裝Redis擴(kuò)展

    RUN pecl install igbinary lzf zstd \
    && docker-php-ext-enable igbinary lzf zstd \
    && pecl install redis \
    && docker-php-ext-enable redis
    RUN docker-php-ext-install pdo pdo_mysql
    RUN docker-php-ext-install pcntl

    設(shè)置工作目錄

    WORKDIR /app

    將當(dāng)前目錄的內(nèi)容復(fù)制到容器的工作目錄中

    COPY . /app

    暴露應(yīng)用程序的端口

    EXPOSE 8000

    運(yùn)行應(yīng)用程序

    CMD php webman start

  • Caesar-Tang 2023-11-20

    棒~

liong

FROM centos:7
是centos7.0的版本還是7.9

小Z先生

這個(gè)image 打出來太大了 大約930多mb 是否可以優(yōu)化的小一點(diǎn) 大約100-200mb的樣子

年代過于久遠(yuǎn),無法發(fā)表評(píng)論

Caesar-Tang

750
積分
0
獲贊數(shù)
0
粉絲數(shù)
2022-03-28 加入
??