Maison  >  Questions et réponses  >  le corps du texte

ghost的docker镜像映射端口无效

系统环境

操作

  1. 下载镜像ghost&&自己制作ghost镜像
  2. docker run -it -p 127.0.0.1::2368 ghost bash
  3. npm start启动ghost成功
  4. 另起一个shelldocker ps -a
adolph@geek:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                       NAMES
84802ccaa8f7        ghost:latest        "/entrypoint.sh bash   32 seconds ago      Up 31 seconds       127.0.0.1:32769->2368/tcp   kickass_bell        
adolph@geek:~$ 

问题描述

在浏览器输入localhost:32769后无法连接到资源

想知道到底是哪里除了问题?

ghost的Dockerfile

shell#build ghost image
FROM adolphlwq/ubuntu:14.04_64_base_image
MAINTAINER adolphlwq <nalan3015@126.com>
ENV REFRESHED_AT 2015-6-9

RUN apt-get update && apt-get -yqq upgrade

#install node
RUN apt-get install -yqq nodejs npm wget unzip 
RUN ln -s /usr/bin/nodejs /usr/bin/node

#install ghost-zh
RUN cd /opt/ && wget http://dl.ghostchina.com/Ghost-0.6.3-zh-full.zip && unzip -uo Ghost-0.6.3-zh-full.zip -d ghost && rm Ghost-0.6.3-zh-full.zip

#initial ghost
RUN cd /opt/ghost && npm install --production

#workdir
WORKDIR /opt/ghost/

#expose port 2368
EXPOSE 2368

CMD npm start

然后我又看了Daocloud上ghost的镜像Dockerfile,核心的地方是类似的,不知道我的问题出在哪,端口映射一直失败
daocloud上ghost的Dockerfile

天蓬老师天蓬老师2759 Il y a quelques jours817

répondre à tous(2)je répondrai

  • 伊谢尔伦

    伊谢尔伦2017-04-22 08:57:40

    Il y a un fichier

    dans le répertoire de fichiers config.example.jsghost pour configurer les paramètres associés :

    config = {
        // ### Production
        // When running Ghost in the wild, use the production environment.
        // Configure your URL and mail settings here
        production: {
            ......
            },
    
            server: {
                host: '0.0.0.0',
                port: '2368'
            }
        },

    Le cœur du problème réside dans la configuration de l'élément serveur. La valeur par défaut est localhost. Il semble que l'hôte local par défaut d'un hôte général corresponde à 127.0.0.1 (vous pouvez également le modifier dans /etc/hosts). localhost est une fausse adresse IP accessible uniquement localement. 0.0.0.0 est similaire au caractère générique * et peut correspondre à n'importe quelle adresse IP. Voir cette réponse pour plus de détails.

    Vous devez donc modifier les éléments de configuration de config.example.js et changer l'adresse liée au serveur en 0.0.0.0.

    Enfin, j'ai également créé une image docker de ghost, et j'ai également utilisé le proxy configuré par nginx. Let's Encrypt est utilisé pour chiffrer https, vous pouvez vous référer à ce qui suit :

    • Image Docker :qBlog

    • mon blog

    répondre
    0
  • 迷茫

    迷茫2017-04-22 08:57:40

    Personne n'a répondu. J'ai également rencontré le même problème. L'image nginx que j'ai créée moi-même a également un port EXPOSE dans le Dockerfile, même si le paramètre -p n'est pas utilisé, l'image est toujours accessible. via l'adresse IP des services hôtes, et aucun d'entre eux ne prend effet lorsque le paramètre -p est spécifié pour ouvrir le mappage de port. Marquez-le, je vais d'abord chercher la réponse

    répondre
    0
  • Annulerrépondre