我正在使用Hugo Framework进行持续部署。我创建了一个包含Caddy服务器,Hugo和用于测试的测试项目的图像,并将其发送到运行Traefik的服务器并启动该图像。
这是Dockerfile:
FROM debian:latest
RUN apt-get update -y && apt-get install git curl -y
ADD https://github.com/gohugoio/hugo/releases/download/v0.42.2/hugo_0.42.2_Linux-64bit.deb /tmp/hugo.deb
RUN dpkg -i /tmp/hugo.deb && rm /tmp/hugo.deb
RUN curl https://getcaddy.com | bash -s personal
RUN chown root:root /usr/local/bin/caddy && chmod 755 /usr/local/bin/caddy
RUN mkdir /srv/app
WORKDIR /srv/app
COPY . ./
RUN git clone https://github.com/RealOrangeOne/hugo-theme-revealjs.git themes/hugo-theme-revealjs
RUN hugo
EXPOSE 2015
CMD ["caddy"]
这是在服务器上运行我的项目的“ docker-compose.yml”:
my_project:
image: some_registry/my_project
ports:
- "2015:2015"
labels:
- "traefik.frontend.rule=Host:subdomain.domain.me"
我差点忘了,这是我的Caddyfile:
localhost:2015
root /srv/app/public
图像可以正常运行,但是到达subdomain.domain.me
时,我收到以下消息:
404 Site subdomain.domain.me未在此界面上投放
但是,运行curl http://localhost:2015
会在服务器上打印项目的HTML。
所以...我认为问题出在Caddy,因为我在使用Apache时没有问题,而我的其他5个项目在使用Traefik时也没有问题。
我的问题是:我应该如何编辑我的Caddyfile,以免出现此问题?
提前谢谢
答案 0 :(得分:3)
Caddy正在寻找一个寻找localhost:2015的请求。我猜想您是将请求转发到计算机,而不是本地主机。
使用-log path / to / log.log参数启动Caddy,您可能会看到请求是什么,或者尝试
:2015
root /srv/app/public
这将满足端口2015上的任何请求。
答案 1 :(得分:1)
容器联网要求您容器内的应用监听所有接口。 Docker无法从容器外部访问容器内部的环回接口,包括已发布的端口和容器到容器的网络。
如果要限制对Docker主机上此端口的访问,可以限制docker发布端口的接口:
public class UserData : Prism.Mvvm.BindableBase
{
private bool _validatedByUser;
public bool ValidatedByUser
{
get
{
return _validatedByUser;
}
set
{
SetProperty(ref _validatedByUser, value);
}
}
private string _userName;
public string UserName
{
get
{
return _userName;
}
set
{
SetProperty(ref _userName, value);
}
}
private double _userValue;
public double UserValue
{
get
{
return _userValue;
}
set
{
SetProperty(ref _userValue, value);
}
}
}
public class ViewCell_Converter : BindableObject, IValueConverter
{
public UserData UserData
{
get { return (UserData)GetValue(bindableProperty); }
set { SetValue(bindableProperty, value); }
}
public static readonly BindableProperty bindableProperty = BindableProperty.Create(
nameof(UserData),
typeof(UserData),
typeof(ViewCell_Converter),
null);
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (UserData != null)
{
if (value is double _value)
{
if (UserData.ValidatedByUser)
{
return string.Format("{0:0.00}", _value);
}
else
{
return string.Format("{0:0.0000}", _value);
}
}
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
在容器内,按照Toby的建议通过从Caddyfile中删除“ localhost”来调整caddy配置。